2013-01-15 55 views
4

在程序调试崩溃之后,我在我的Temp目录中留下堆转储* .mdmp文件& appcompat.txt。我明白,appcompat.txt是一个错误报告。 是否有描述该软件格式?程序崩溃 - 如何阅读appcompat.txt?

我的appcompat.txt列出了许多DLL。我是否正确地认为崩溃的原因可能只来自列出的某个DLL? 我可以限制我的调试工作到appcompat.txt中列出的DLL吗?

提前感谢!

+0

它应该列出你的进程使用的所有DLL。所以不,对于限制并不完全有用。 –

+0

除非你亲自编写这些DLL,否则它们中的任何一个都不会导致问题。你有没有尝试在Visual Studio中打开小型转储? – molbdnilo

+0

@molbdnilo事实上,我自己编写了一些DLL,其余的都是由我的同事编写的,但是发生崩溃的部分恰恰在外部代码中,我没有任何源代码或调试数据库。小型转储没有源代码附加到它,所以它只能显示我的反汇编,这是,你会同意,非常没有信息。 –

回答

3

的转储文件是迄今为止诊断死机更多的信息:

这将尝试隔离崩溃的位置。请注意,仅仅因为在特定的dll中发生了崩溃,并不意味着这是该bug所在的位置 - 这可能是因为从应用程序代码中传入了一个无效的参数。分析应该有希望向你展示一个有意义的堆栈和一个错误代码,这将有助于确定崩溃的实际原因。

+0

谢谢,我安装了这个程序,但是我没有看到比在VS打开的小型转储器更多的信息。大多数调用堆栈函数现在都有名称,但我不知道究竟发生了什么故障。如果我要调试的EXE使用QT&boost,我是否需要两者的调试符号(和源文件)? –

+0

是的,您需要调试符号才能获得任何有意义的碰撞分析。这是你自己创建的应用程序吗?请注意,您需要创建应用程序时创建的* exact * pdb文件。仅仅从相同的来源构建是不够的。 –

+0

Woof,我需要v4.6.2(这不是最新的&我没有在我的机器上构建Qt)的Qt源代码和pdb文件,除了一些其他稍微过时的资源,例如boost和OpenInventor。如果我设法将所有这些结合在一起并进行有意义的调试,我会让你知道! Thx为您的答复! –