GNU/Linux >> Linux の 問題 >  >> Linux

C/C++ でプログラムによってコア ダンプを発生させる方法

数年前、Google はコアダンパー ライブラリをリリースしました。

<ブロック引用>

概要

コアダンパー ライブラリをアプリケーションにコンパイルして、実行中のプログラムのコア ダンプを作成できます。終了する必要はありません。カーネルがネイティブでマルチスレッド コア ファイルをサポートしていない場合でも、シングルスレッドとマルチスレッドの両方のコア ダンプをサポートします。

Coredumper は、BSD ライセンスの条項に基づいて配布されます。

これは決して完全な例ではありません。コアダンパー API がどのようなものかを簡単に理解できます。

#include <google/coredumper.h>
...
WriteCoreDump('core.myprogram');
/* Keep going, we generated a core file,
 * but we didn't crash.
 */

それはあなたが求めていたものではありませんが、もっと良いものかもしれません :)


信号番号 6 の発生 (SIGABRT Linux では) は、それを行う 1 つの方法です (ただし、SIGABRT は必須ではないことに注意してください) すべての POSIX 実装で 6 になるため、SIGABRT を使用することをお勧めします。 これがクイックアンドダーティ デバッグ コード以外の場合は、それ自体を評価してください)。

#include <signal.h>
: : :
raise (SIGABRT);

abort() を呼び出す コア ダンプも発生します。せずにこれを実行することもできます。 fork() を呼び出してプロセスを終了する 続いて abort() 子のみ - 詳細については、この回答を参照してください。


Linux
  1. コマンドライン パラメータがある場合、GDB を使用してプログラムのコア ダンプ ファイルを分析するにはどうすればよいですか?

  2. Linux の C/C++ でユーザー名を取得するには?

  3. c/c++ 静的ライブラリの依存関係を一覧表示するには?

  1. 端末がC/c ++プログラムで使用する文字エンコードを判別する方法は?

  2. CentOS/RHEL でアプリケーションのコア ダンプを有効にする方法

  3. アプリケーションに SUID が設定されている場合、コア ダンプが作成されないのはなぜですか?

  1. プログラムで動画を作成する方法

  2. (C/C++) Windows と Linux の両方で実行できる実行可能ファイルを生成する方法は?

  3. プログラムでコア/クラッシュ ダンプを有効にする