我试图调试一个崩溃的小型转储。有释放调试符号和释放二进制文件相同的崩溃。当调试崩溃并指向符号时,我仍然得到“未找到匹配的二进制文件”错误。我使用正确的符号,二进制文件和指向正确的位置。那么为什么会发生这种情况呢?我可以看到VS中加载的dll的时间戳(9:03AM)和发布二进制文件(9:04AM)有轻微的差异。这可能是错误的原因吗?任何解决方案,我需要修复崩溃,因为这个崩溃发生在客户端机器上,我不能再现它。
wwodge7n1#
您可以尝试使用windbg/ntsd(来自Windows SDK附带的“Windows版本工具”包)调试转储。您可以尝试加载符号,同时忽略.pdb文件版本“.reload /i”命令中的不匹配。
axr492tv2#
对我们来说,这是因为pdb文件的名称。确保可执行文件名和调试信息文件名匹配。正确的名字是MyAwesomeApp.exe和MyAwesomeApp.pdb。如果你的管道 * 碰巧 * 将文件重命名为MyAwesomeApp_v1.2.3.4_DebugInfo.pdb左右,下载后只需重命名为原始文件。这也可能是为什么时间戳不一样的原因。创建文件和重命名在我们的操作中发生在不同的步骤(彼此接近,但不是原子操作)。所以当它在一分钟的第59秒左右创建文件时,重命名可能会在下一分钟下降,然后boom - 9:03刚好变成9:04。
pdb
MyAwesomeApp.exe
MyAwesomeApp.pdb
MyAwesomeApp_v1.2.3.4_DebugInfo.pdb
2条答案
按热度按时间wwodge7n1#
您可以尝试使用windbg/ntsd(来自Windows SDK附带的“Windows版本工具”包)调试转储。您可以尝试加载符号,同时忽略.pdb文件版本“.reload /i”命令中的不匹配。
axr492tv2#
对我们来说,这是因为
pdb
文件的名称。确保可执行文件名和调试信息文件名匹配。正确的名字是
MyAwesomeApp.exe
和MyAwesomeApp.pdb
。如果你的管道 * 碰巧 * 将文件重命名为
MyAwesomeApp_v1.2.3.4_DebugInfo.pdb
左右,下载后只需重命名为原始文件。这也可能是为什么时间戳不一样的原因。创建文件和重命名在我们的操作中发生在不同的步骤(彼此接近,但不是原子操作)。所以当它在一分钟的第59秒左右创建文件时,重命名可能会在下一分钟下降,然后boom - 9:03刚好变成9:04。