当前位置:  开发笔记 > 编程语言 > 正文

C++程序崩溃时如何获得堆栈跟踪?(使用msvc8/2005)

如何解决《C++程序崩溃时如何获得堆栈跟踪?(使用msvc8/2005)》经验,为你挑选了1个好方法。

有时我的c ++程序在调试模式下崩溃,我得到的是一个消息框,说明某些内部内存管理例程中的断言失败(访问未分配的内存等).但我不知道从哪里调用,因为我没有得到任何堆栈跟踪.如何获取堆栈跟踪或至少查看我的代码中的失败位置(而不是库/内置例程)?



1> Brian R. Bon..:

如果发生崩溃,无论是否有调试或发布版本,都可以获得有关崩溃发生位置的信息.即使您在没有源代码的计算机上,也可以看到调用堆栈.

为此,您需要使用使用EXE构建的PDB文件.将PDB文件放在与崩溃的EXE相同的目录中.注意:即使您拥有相同的源代码,构建两次并使用第一个EXE和第二个PDB也不起作用.您需要使用使用EXE构建的确切PDB.

然后将调试器附加到崩溃的进程.示例:windbg或VS.

然后只需检查您的调用堆栈,同时还打开您的线程窗口.您必须选择崩溃的线程并检查该线程的callstack.每个线程都有一个不同的调用堆栈.

如果您已经连接了VS调试器,它将自动转到导致崩溃的源代码.

如果崩溃发生在您正在使用的库中,那么您没有PDB.你无能为力.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有