直到现在我在项目中使用调试模式二进制文件。因此,使用保留的符号文件分析故障转储很容易。
现在我必须在发布模式下发送二进制文件。我们如何分析由发布模式二进制文件生成的转储文件。
答案 0 :(得分:3)
您需要与可执行文件对应的.pdb文件。那会给你符号。
调试发布版本有几个棘手的部分:
答案 1 :(得分:2)
无需拥有MAP文件。您需要启用“生成调试信息”/DEBUG
标志,即使对于发布版本也是如此。在VS2008及更高版本上,即使对于发布版本,也会设置/DEBUG
标志。在早期版本中,您需要明确地执行此操作。
这将为您的.EXE / .DLL生成.PDB文件,您必须将它们与您的可执行文件/ DLLS一起保存(您可能会也可能不会向客户提供,这是您的选择)。发生崩溃转储时,您应该拥有/获取.DMP文件。只需从存储PDB文件的位置加载Visual Studio中的DMP文件即可。这将显示崩溃发生的调用堆栈。
如果有多个线程,则需要切换到“Threads”窗口并查找“Suspended”列。悬挂为 1 的列是导致崩溃的线程。
使用它可以看到所有正在运行的线程的正确调用堆栈。但是您还需要正确复制源代码以查看代码!否则它只是集会。除非你确实有正确的源代码,否则MFC / ATL / STL等的部分源代码可能是可见的,但不是你的代码。
PDB文件确实存储了源代码的路径,它们将使调试器能够加载源文件,即使源不是来自放置PDB和DMP文件的位置。