2

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

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

4

4 回答 4

6

你不需要做任何特别的事情。abort从 Visual Studio 构建的 C/C++ 程序调用会产生以下消息:

--------------------------
Microsoft Visual C++ 调试库
--------------------------
调试错误!
程序: ...
R6010
- abort() 已被调用
(按重试调试应用程序)
--------------------------
中止 重试 忽略   
--------------------------

按重试打开带有完整调用堆栈的调试器。当程序在独立模式和调试器下运行时,此功能可用于调试和发布配置。在发布配置中,对话框不同,它包含打开调试器的中断按钮,如调试配置中的重试。

于 2013-09-08T13:11:16.620 回答
1

我遇到了同样的问题,发现这个答案对我有用:按 CTRL+B 并在文本字段中输入“中止”。

于 2019-05-15T14:36:56.023 回答
0

只是为了调试,你可以覆盖abort函数并在里面设置一个断点。

void abort()
{
    std::cout << "aborting" << std::endl; // put break here...
    exit(-1);
}
于 2013-09-08T14:09:56.287 回答
-1

在 linux 的情况下gdb,点击后abort,您可以使用命令轻松查看堆栈跟踪bt。无需添加额外的断点。

于 2015-12-07T15:33:52.293 回答