1

多くのアプリケーションでは、クラッシュ時にエラー ログが生成されるため、バグを簡単に見つけることができます。同じことを達成するために、Linux シグナル処理を使用してセグメンテーション違反をキャッチしました。stacktrace.hを使用してトレースを生成しました。

void sigsegvHandler(int)
{
  signal(SIGABRT, 0);
  signal(SIGSEGV, 0);
  FILE * errorLog;
  errorLog = fopen ("/tmp/myapp.log" , "w");
  qDebug() << "\n\n*************************************************************\n";
  qDebug() << "Catching SIGSEGV, please report a bug at http://mysite.com/bugs
  qDebug() << "MyApp version: " << "1.0-1" << "\n";
  print_stacktrace(errorLog);
  fclose(errorLog);
  raise(SIGSEGV);
}

しかし、生成されたトレースは、クラッシュについてほとんど何も語っていません。アプリケーションのデバッグ バージョンを使用している場合、gdb を使用した場合のように、クラッシュが発生したコードの行番号を指すトレースを生成することはできませんか。

4

0 に答える 0