c++ - 注入(inject)的 DLL 不能使用 Symbols pdb,除非它与构建在同一目录中

标签 c++ debugging

我有一个问题,我试图有选择地分发我的 pdb(symbol) 文件,这样我就可以让用户给我更详细的崩溃报告。

所以...我的 DLL 被注入(inject)到另一个 exe(在另一个文件夹中)。从我测试过的所有内容来看,我的 PDB 文件必须位于用户机器上与我机器上完全相同的目录中,才能正确找到它。

IE...当我构建时,我将 PDB 放在 C:\PDB\Mypdb.pdb

如果用户创建了确切的文件夹并将 pdb 放在那里,注入(inject)的 dll 将在崩溃时向他显示行号。但是,如果他将 mypdb.pdb 与 dll 或注入(inject)目标放在一起,则它们不会收到任何符号。

关于如何强制我的 DLL 在可定制位置使用符号文件有什么想法吗?

最佳答案

这是因为默认情况下,链接器使用绝对路径指向它生成 PDB 文件并将其存储在 DLL 本身的位置。您可以通过传递 /PDBALTPATH 来更改 PDB 文件的路径。选项和链接器的相对路径。

关于c++ - 注入(inject)的 DLL 不能使用 Symbols pdb,除非它与构建在同一目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31363404/

相关文章:

c++ - 使用语句和 protected 构造函数

c++ - 如何在 C++ 的外部类构造函数中初始化嵌套类成员

php - 在 php 中调试 mongodb 查询和其他功能

c# - 如何更正此说明 WPF DependencyProperty 用法的示例?

debugging - 如何在 Delve 中通过源文件行号设置断点?

debugging - 如何调试 SCons 脚本

c++ - 将函数声明为 __attribute__(nothrow) 和 `throw()` 有什么区别

c++ - vector storing lambdas——CLANG 与其他两个

c++ - 存储由空格分隔的字母矩阵

java - Eclipse 调试文件丢失