在调用abort()时设置断点

时间:2013-09-08 13:03:39

标签: c++ debugging visual-studio-2012 breakpoints abort

我正在调试一个应用程序,由于某些原因(我不太确定),在关闭我的应用程序时调用abort()。我想尝试找到这个的原因,所以我想在abort()上放置一个断点,这样我就可以看到堆栈跟踪并希望找到它被调用的原因,而不是优雅的退出。

我正在使用Microsoft Visual Studio 2012(更新3)并且只有abort()函数的声明(在stdlib.h中),因此我无法设置断点。有没有办法解决这个问题?

4 个答案:

答案 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”。