c++ - Totalview:有没有办法硬编码断点?

标签 c++ c mpi totalview

我有一个并行 (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/

相关文章:

c++ - 现代c++是否会有默认的初始化值

java - JNI : passing integer array from Java to C

mpi - 是否可以在同一个文件中,在文件末尾,以一种有序的方式写入多个处理器?

c - MPI 分散/收集变量范围

c - C语言中的迭代函数有什么作用?

c - 在 MPI 中运行我的代码时,尽管遵循正确的语法,但根进程永远不会执行

c++ - 尝试使用 *this 引用已删除的函数

c++ - 计算输入文件中有多少个 "things"被放入数组

C 编译错误 - "fgetc & fputc too few arguments"

c - 为什么我的矩阵的最后一列没有打印出来?