2010-05-21 26 views
2

我有一个程序在运行“release”版本时崩溃(尝试读取不良的内存地址),但在Visual Studio调试器中运行“debug”版本时没有报告任何问题。如何查找程序崩溃

当程序崩溃时,操作系统询问我是否想打开调试器,如果我说是,那么我会看到一个箭头指向我在某个汇编器列表中的位置,这个汇编器我不够熟练正确阅读(30年前我学会了6502汇编)。有没有什么办法可以确定我的源代码中哪里存在读取的内存?

回答

5

您需要在启用了调试信息的情况下构建程序(即使对于发布版本,您也可以执行此操作),并且调试器(只需将它复制到可执行文件旁边)就可以访问调试信息(* .pdb文件)。
VS应该能够显示源,堆栈和其他一切。

+0

只是一句话。像那样你必须在调试器中运行它。这样你可以改变行为并防止崩溃发生。 如果它仍然崩溃,比完美。否则,我建议检查我发布的链接。 – Gianluca 2010-05-21 10:29:19

+0

如果我在调试器中运行发行版本,它会以接近全速运行吗? – Mick 2010-05-21 10:38:50

+0

@Mick:你不必在调试器中运行它。当你发现自己的时候,操作系统会问你是否要在程序崩溃时进行调试。 (这就是所谓的即时调试。)但调试器必须拥有调试信息才能充分利用该功能。 – sbi 2010-05-21 19:06:07

0

只是想添加一点除了什么sbi告诉你。有用于Windows的Microsoft调试工具。这个软件包包含一本好书“调试帮助”。即使您不打算使用WinDbg来分析崩溃,您可能会发现阅读“调试帮助”相当有用。