在调用 abort() 时设置断点
Setting a breakpoint on calling abort()
我正在调试一个应用程序,出于某种原因(我不太确定),关闭应用程序时调用了abort()
。我想尝试找到造成这种情况的原因,所以我想在abort()
上放置一个断点,以便我可以看到堆栈跟踪,并希望发现调用它而不是优雅退出的原因。
我使用的是Microsoft Visual Studio 2012(更新 3),并且只有 abort()
函数的声明(在 stdlib.h
中),因此无法设置断点。有什么办法可以解决这个问题吗?
你不需要做任何特别的事情。 abort
来自 Visual Studio 构建的 C/C++ 程序的调用将生成以下消息:
---------------------------Microsoft可视化C++调试库---------------------------调试错误!程序:。。。R6010- abort() 已被调用(按重试以调试应用程序)---------------------------中止重试忽略 ---------------------------
按重试将打开具有完整调用堆栈的调试器。当程序在独立模式下和调试器下运行时,此功能可用于调试和发布配置。在发布配置中,对话框是不同的,它包含"中断"按钮,用于打开调试器,如"调试配置中的重试"。
我遇到了同样的问题,并找到了这个对我有用的答案:按 CTRL+B 并在文本字段中输入"中止"。
仅用于调试,您可以覆盖abort
函数并在内部设置断点。
void abort()
{
std::cout << "aborting" << std::endl; // put break here...
exit(-1);
}
在 linux gdb
的情况下,点击 abort
时,您可以轻松看到带有命令 bt
的堆栈跟踪。无需添加额外的断点。
相关文章:
- 在 vscode 中运行时无法暂停或设置断点
- 如何在进入动态打开的共享库时设置断点?
- 代码在 msvcrt .dll函数上设置断点失败
- 如何在 gdb 中的所有构造函数上同时为 C++ 对象设置断点?
- 使用 gdb 在模块中的特定行设置断点
- 无法设置断点以查看错误C 有序列表
- 使用Visual Studio Code和CMake调试OpenGL(使用GLEW&GLFW),无法设置断点
- 如何修复此错误:在malloc_error_break中设置断点以进行调试
- 在malloc_error_break中设置断点以在C++中调试
- 是否使用通配符设置断点
- 在Visual Studio中的dll中的函数处设置断点
- 正在设置断点,但未命中断点
- 如何在gdb中为函数的所有调用设置断点
- LLDB:通过控制台为malloc_error_break设置断点
- 如何在Linux中使用QTCreator中的dlopen打开的共享库中设置断点
- 当某个条件为真时,如何在 Eclipse 中以编程方式设置C++断点
- 如何使用 windbg 在不属于任何类的函数声明上设置断点
- 如何在捕获块中设置断点?(C++)
- 如何在 Visual Studio 中的 DLL 上设置断点
- 在名称包含 WinDBG 中的空格的重载函数处设置断点