【发布时间】:2018-05-16 01:36:05
【问题描述】:
我有一个 c++ 应用程序,它使用 g3log 库在发生崩溃时提供堆栈跟踪信息。我的发布配置还构建了完整的 pdb 文件,因此这是可能的。我的 app.exe 存储了 pdb 文件的完整路径,也就是说我没有使用 /PDBALTPATH:%_PDB%。
当我从任何文件夹路径运行 .exe 时,只要 .pdb 没有被移动,那么如果我强制崩溃,我会得到一个有意义的堆栈跟踪。现在,如果我将 .pdb 文件移动到与我的 .exe 相同的目录中,它将不再加载。我的猜测是与 .exe 中的路径不匹配。我以为会加载一个与.exe同名的.pdb文件,我想我错了。
我已经通过指定 /PDBALTPATH:%_PDB% 进行了测试,这样就没有路径信息,但是 .pdb 文件再次永远不会加载。
对于这两种情况,如果我附加了一个调试器,调试器中的一切都很好,但我的堆栈跟踪中却没有。
有没有办法让 .pdb 的“自动加载”(不知道如何调用它)从它与 .pdb 位于同一目录中的完整路径匹配时发生。这样我可以在需要时获得有意义的调用堆栈。
【问题讨论】:
-
据我了解,您正在尝试在没有调试器的情况下加载 PDB 文件。并且您希望通过该库记录可能的异常详细信息。我说的对吗?
-
这是正确的,正如我在帖子中提到的,当 .pdb 文件路径与 .exe 中引用的路径匹配时,这种情况已经发生。我只是希望它在 pdb 以某种方式位于同一文件夹中时也发生......