我有一个并行 (MPI) c/c++ 程序,在某些情况下有时会导致错误。一旦发生错误,将打印一条消息并退出程序;我想设置一个断点来查看堆栈以及有关导致错误的原因的更多详细信息。我正在使用 TotalView 进行调试,我希望它在我的错误例程中的断点处停止。我希望它始终自动设置此断点。有办法做到这一点吗?
我正在考虑使用 signal.h 和 raise,但尚不清楚 TotalView 如何响应。
看这个问题,How do you stop in TotalView after an MPI Error? ,似乎 C++ 异常处理,即 throw(),会自动导致 TotalView 停止。在 C 中执行此操作的正确方法是什么?
最佳答案
我不知道 totalview 是什么,所以这可能不适用。
在 Windows 中:DebugBreak();
在 x86 程序集中:__asm int 3;
在 Linux 中:raise(SIGTRAP);
对于 Windows,我有一个方便的宏:
#define DEBUGME() do{if (IsDebuggerPresent()) DebugBreak();}while(0)
如果没有附加调试器,这会导致执行继续。
关于c++ - Totalview:有没有办法硬编码断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7045866/