1

特定の条件下で時々エラーになる並列 (MPI) c/c++ プログラムがあります。エラーが発生すると、メッセージが出力されてプログラムが終了します。ブレークポイントを設定して、スタックとエラーの原因に関する詳細を確認したいと思います。TotalView を使用してデバッグを行っていますが、エラー ルーチンのブレーク ポイントで停止させたいと考えています。このブレークポイントを常に自動的に設定してほしいです。これを行う方法はありますか?

signal.h と raise の使用を検討していますが、TotalView がどのように応答するかはまだ明確ではありません。

この質問を見ると、MPI エラーの後に TotalView を停止するにはどうすればよいですか? 、C++ の例外処理、つまり throw() により、TotalView が自動的に停止するようです。Cでこれを行う正しい方法は何ですか?

4

2 に答える 2

4

totalview が何かわからないので、これは当てはまらないかもしれません。

Windows の場合: x86 アセンブリの場合: Linux の場合:DebugBreak();
__asm int 3;
raise(SIGTRAP);

Windows の場合、私が使用する便利なマクロがあります。
#define DEBUGME() do{if (IsDebuggerPresent()) DebugBreak();}while(0)
これにより、デバッガーが接続されていない場合に実行が続行されます。

于 2011-08-12T20:34:27.887 に答える