我正在调试一个应用程序,由于某些原因(我不太确定),在关闭我的应用程序时调用abort()
。我想尝试找到这个的原因,所以我想在abort()
上放置一个断点,这样我就可以看到堆栈跟踪并希望找到它被调用的原因,而不是优雅的退出。
我正在使用Microsoft Visual Studio 2012(更新3)并且只有abort()
函数的声明(在stdlib.h
中),因此我无法设置断点。有没有办法解决这个问题?
答案 0 :(得分:3)
你不需要做任何特别的事情。来自Visual Studio构建的C / C ++程序的abort
调用产生以下消息:
--------------------------- Microsoft Visual C++ Debug Library --------------------------- Debug Error! Program: ... R6010 - abort() has been called (Press Retry to debug the application) --------------------------- Abort Retry Ignore ---------------------------
按Retry打开调试器并使用完整的调用堆栈。当程序在独立模式下运行并在调试器下运行时,此功能可用于调试和发布配置。在Release配置中,对话框是不同的,它包含Break按钮,它打开调试器,就像在Debug配置中重试一样。
答案 1 :(得分:0)
仅用于调试,您可以覆盖abort
函数并在其中设置断点。
void abort()
{
std::cout << "aborting" << std::endl; // put break here...
exit(-1);
}
答案 2 :(得分:0)
对于linux gdb
,在点击abort
后,您可以通过命令bt
轻松查看堆栈跟踪。无需添加额外的断点。
答案 3 :(得分:0)
我遇到了同样的问题,并找到了适合我的答案:按CTRL + B并在文本字段中输入“ abort”。