如何找到程序崩溃的位置
Posted
技术标签:
【中文标题】如何找到程序崩溃的位置【英文标题】:How to find where program crashed 【发布时间】:2011-02-22 07:07:26 【问题描述】:我有一个程序在运行“发布”版本时崩溃(试图读取错误的内存地址),但在 Visual Studio 调试器中运行“调试”版本时没有报告任何问题。
当程序崩溃时,操作系统会询问我是否要打开调试器,如果我说是,那么我会看到一个箭头指向我在某个汇编程序列表中的位置,但我不够熟练,无法阅读正确(我在 30 年前学习了 6502 汇编程序)。有什么方法可以让我确定在我的源代码中读取的违规内存位于何处?
【问题讨论】:
【参考方案1】:除了 sbi 告诉你的内容之外,我只想补充一点。有适用于 Windows 的 Microsoft 调试工具。该软件包包含一本好书“调试帮助”。即使您不打算使用 WinDbg 来分析崩溃,您也可能会发现阅读“调试帮助”非常有用。
【讨论】:
【参考方案2】:您需要在启用调试信息的情况下构建您的程序(您甚至可以对发布版本执行此操作)并且调试器必须可以访问该调试信息(*.pdb 文件)(只需将其复制到可执行文件旁边即可)。 VS 应该能够向您显示源代码、堆栈和其他所有内容。
【讨论】:
只是一个评论。就像你必须在调试器中运行它。这样您就可以改变行为并防止崩溃发生。如果它仍然崩溃,那就完美了。否则我建议检查我发布的链接。 如果我在调试器中运行发布版本,它会以足够接近全速运行吗? @Mick:您不必在调试器中运行它。当您发现自己时,操作系统会在程序崩溃时询问您是否要调试。 (这称为即时调试。)但调试器必须拥有调试信息才能充分利用该功能。以上是关于如何找到程序崩溃的位置的主要内容,如果未能解决你的问题,请参考以下文章