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

C++ Totalview:有没有办法硬编码断点?,c++,c,mpi,totalview,C++,C,Mpi,Totalview,我有一个并行(MPI)c/c++程序,在某些情况下会不时导致错误。一旦发生错误,将打印一条消息并退出程序;我想设置一个断点来查看堆栈以及有关错误原因的更多详细信息。我正在使用TotalView调试东西,我希望它在错误例程的断点处停止。我希望它总是,自动设置这个断点。有办法做到这一点吗 我正在研究使用signal.h和raise,但还不清楚TotalView如何响应 查看此问题,似乎C++异常处理,即PULL(),将自动导致TooVIEW停止。在C语言中,正确的方法是什么?我不知道什么是total

我有一个并行(MPI)c/c++程序,在某些情况下会不时导致错误。一旦发生错误,将打印一条消息并退出程序;我想设置一个断点来查看堆栈以及有关错误原因的更多详细信息。我正在使用TotalView调试东西,我希望它在错误例程的断点处停止。我希望它总是,自动设置这个断点。有办法做到这一点吗

我正在研究使用signal.h和raise,但还不清楚TotalView如何响应


查看此问题,似乎C++异常处理,即PULL(),将自动导致TooVIEW停止。在C语言中,正确的方法是什么?

我不知道什么是totalview,所以这可能不适用

在windows中:
在x86汇编中:
在linux中:

对于windows one,我使用了一个方便的宏:
#define DEBUGME()do{if(IsDebuggerPresent())DebugBreak();}而(0)


如果没有附加调试器,则会导致执行继续。

我不知道什么是totalview,因此这可能不适用

在windows中:
在x86汇编中:
在linux中:

对于windows one,我使用了一个方便的宏:
#define DEBUGME()do{if(IsDebuggerPresent())DebugBreak();}而(0)


如果未连接调试器,则会导致执行继续。

在TotalView中,文件>信号菜单选项打开此窗口:

这是为了控制响应信号调用的默认行为。SIGTRAP和SIGSTOP是保留的,TotalView似乎对它们有不同的处理方式。也就是说,
raise(SIGSTOP)
没有按照TotalView中的预期停止

该计划:

#include <signal.h>

main(int argc, char* argv[])
{
  raise(SIGTRAP);
}

这只是获得硬编码断点所需效果的许多方法之一

在TotalView中,文件>信号菜单选项打开此窗口:

这是为了控制响应信号调用的默认行为。SIGTRAP和SIGSTOP是保留的,TotalView似乎对它们有不同的处理方式。也就是说,
raise(SIGSTOP)
没有按照TotalView中的预期停止

该计划:

#include <signal.h>

main(int argc, char* argv[])
{
  raise(SIGTRAP);
}

这只是获得硬编码断点所需效果的许多方法之一

这是一个好主意,可能会奏效,但我正在*nix系统上运行这段代码。TotalView是一个调试器。不妨尝试一下x86程序集。这就是我在linux上所能找到的一切。程序集几乎可以工作,我怀疑TotalView会保留这个“INT3”程序集语句供其内部使用。当我在所需的断点处包含
\uuuu asm\uuuu(“int3”)
时,编译并运行代码,我没有得到所需的效果。进程仍然被标记为正在运行,即使代码显然已在断点处停止。状态栏列出了处于调试状态的程序,但未显示源代码。如果我“暂停”程序,那么我就得到了想要的效果,我在断点处看到了源代码。它应该是
\uuuasm\uuuuuuu(“int$3”)。不幸的是,在纠正这一点后,我得到了与上面讨论的相同的行为。你是否尝试过加薪(SIGTRAP)?这是一个好主意,可能会奏效,但我在*nix系统上运行这段代码。TotalView是一个调试器。不妨尝试一下x86程序集。这就是我在linux上所能找到的一切。程序集几乎可以工作,我怀疑TotalView会保留这个“INT3”程序集语句供其内部使用。当我在所需的断点处包含
\uuuu asm\uuuu(“int3”)
时,编译并运行代码,我没有得到所需的效果。进程仍然被标记为正在运行,即使代码显然已在断点处停止。状态栏列出了处于调试状态的程序,但未显示源代码。如果我“暂停”程序,那么我就得到了想要的效果,我在断点处看到了源代码。它应该是
\uuuasm\uuuuuuu(“int$3”)。不幸的是,在纠正这一点后,我得到了与上面讨论的相同的行为。你是否尝试过加薪(SIGTRAP)?如果这不起作用,那我就没办法了。接得好,很高兴你明白了。接得好,很高兴你明白了