最近、プロジェクトで問題が発生しました。サーバー側のプログラムが突然クラッシュして終了しました。クラッシュの原因、つまりプロセスが終了したときに実行されていた関数とそのステータスを特定するために、コアダンプ技術を使用しました。 システムで coredump が有効になっている場合、より正確には、現在のシェル環境で coredump が有効になっている場合、現在のシェル環境のプログラムがクラッシュして終了すると、その時点でのプロセス スタックのメモリ状態がコア ファイルに書き込まれます。 gdb を使用して、このコア ファイル (gdb a.out core) に保存されているスタックのステータスを表示します。 (コアダンプとシェルの詳細については、私の別のブログ「dotnet-dump を使用して .net core 3.0 が CPU を 100% 占有する理由を調べる」を参照してください。gdb については、「gdb デバッグ コマンドの使用と概要」を参照してください) コア ファイルのデフォルトの場所は実行可能ファイルの場所であり、デフォルトの名前は core です。場所と名前は設定できます。私の設定は次のとおりです。 mkdir /home/corefile echo "/home/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern この方法では、生成されたコア ファイルは /home/corefile ディレクトリに配置され、コア ファイル名は core-%e-%p-%t の形式で表示されます。ここで、%e は実行可能ファイルの名前、%p はプロセス、%t はコア ファイルが生成された時刻 (Unix 時間であることに注意してください) を表します。 コアダンプを引き起こす可能性があるルーチンは次のとおりです。 交差した線は、コアダンプが発生する場所です。実行後、/home/corefile ディレクトリに次のファイルが生成されます。 [root@localhostwin7]# ls /home/corefile/ a.out は実行ファイル名、5082 は PID、1490760381 はファイルが生成された Unix 時間です。 a.out ファイルと core ファイルをディレクトリに配置し、次のコマンドを使用します。 gdb に入り、backtrace コマンドを使用して、プロセスが終了したときのスタックのメモリ ステータスを次のように表示します。 プロセスが終了すると、最後に実行される関数は square 関数であることがわかります。 ———————————————— 要約する 上記は、Linux でプロセス クラッシュの原因をトレースするために coredump テクノロジを使用する方法について紹介したものです。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。 |
<<: vscodeを使用してReact Native開発環境を構築する方法を教えます
>>: SQL文におけるGROUP BYとHAVINGの使用に関する簡単な説明
目次MySQL マスタースレーブ同期原理の簡単な分析1. マスタースレーブとは何ですか? 2. 主従...
まず、Tomcatフォルダを作成します。Dockerの設定を容易にするために、ルートディレクトリに直...
検索ミラー docker 検索 rocketmq画像バージョンを表示他の画像を表示したい場合は、画像...
問題の原因ご存知のとおり、すべてのネットワーク動作は対応するネットワークトラフィックを生成し、すべて...
目次無イメージの創造と混乱Noneオブジェクトをクリーンアップする方法トリムミラーコンテナで使用され...
私は最近、最も安い Tencent クラウド サーバーを購入しました。これは主に、Web テクノロジ...
目次1. はじめに2. 原則III. 実践3.1 インデックスプッシュダウンを使用しない3.2 イン...
html、address、blockquote、body、dd、div、dl、dt、fieldset...
nginx.conf設定ファイルは次のとおりです。 ユーザー nginx; ワーカープロセス 1; ...
序文explain コマンドは、クエリ オプティマイザーがクエリの実行を決定した方法を確認する主な方...
input と img を同じ行に配置すると、img タグが常に input より 1 つ上になり、...
/etc/my.cnf または /etc/mysql/my.cnf ファイルを変更する [クライアン...
MySQLデーモンの起動に失敗したエラーの解決方法数日前、公開されたウェブサイトはこれらのアクティビ...
プロセス分析の実装(1)繰り返して電話をかけるには?答え: 関数をカプセル化して一度だけ呼び出すコー...
プロジェクトでは、データを操作するためにバッチ操作ステートメントが必要になることがよくあります。バッ...