【问题标题】:Injected DLL can't use Symbols pdb unless it's in the same directory as build注入的 DLL 不能使用 Symbols pdb,除非它与 build 位于同一目录中
【发布时间】:2015-07-12 09:19:10
【问题描述】:

我有一个问题,我试图有选择地分发我的 pdb(symbol) 文件,以便让用户向我提供更详细的崩溃报告。

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

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

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

关于如何强制我的 DLL 在可自定义位置使用符号文件的任何想法?

【问题讨论】:

  • 是的,这就是我试图找出它是否可以定制的东西......这样我就可以让用户在他们想要的任何地方安装 DLL,并且只包含 PDB。

标签: c++ debugging


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    相关资源
    最近更新 更多