注入的DLL不能使用符号pdb,除非它与构建在同一目录中

时间:2015-07-12 01:11:43

标签: c++ debugging

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

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

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

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

关于如何强制我的DLL在一个可以在custimizable位置使用符号文件的任何想法?

1 个答案:

答案 0 :(得分:1)

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