0

クラッシュしたC++MacアプリケーションからBackTraceを取得したいのですが、Macを初めて使用するため、最善の方法がわかりません。

私はその使用法を詳述するstackoverflowに関する質問を見つけました:macosxで現在のスタックトレースを取得する

しかし、私の問題は、コードがどこにあるのかわからないということです。

  1. main.cppに含まれていますか?
  2. それはtrycatchブロックのcatch部分にありますか?

私はいくつかの完全なコード例で行うことができましたが、それらを見つけるのに問題があります。

4

1 に答える 1

1

他の質問で参照されているコードは、クラッシュ後に実行される場所に移動する必要があります。何が起こっているかに応じて、例外がスローされた場合はcatchブロックに、セグメンテーション違反やバスエラーなどが原因でプログラムがクラッシュした場合はシグナルハンドラーに含まれる可能性があります。

信号をキャッチする例を次に示します。main()に入れます。

static void CatchSignal(int num) {
// code to execute when signal is caught
}

void InstallSignalHandler(const int which[15]) {
     for (int i = 1; i < 15; i++) 
         if (which[i] != 0 && which[i] != SIGABRT)
            signal(which[i],CatchSignal);
}
于 2009-10-05T15:27:01.747 に答える