【備忘録】ちょっとしたメモ書き【備忘録】

自分でやったこと調べてみた事とのメモ書きブログです
主に周辺機器の翻訳した取り説や故障修理の手順を記録しています。

Pstack

2024年10月21日 | UNIX忘備録

pstack コマンドは、Solarisや他のUNIX系オペレーティングシステム上で実行中のプロセスやコアダンプファイルのスタックトレースを表示するためのツールです。pstackを使うことで、指定したプロセスやコアファイルに関する各スレッドのコールスタックを確認できます。

出力の解説

  • core 'core_file' of 1234: myapp
    pstackが解析しているコアダンプファイルと、そのダンプが取られたプロセスID(ここでは 1234)、およびプロセス名(myapp)を表示しています。

  • lwp#thread#
    それぞれのスレッドのLight Weight Process (LWP)番号と、スレッド番号が表示されます。LWPは、SolarisのスレッドのOSレベルでの実装です。

  • コールスタック
    各スレッド(LWP)のスタックトレースが表示されます。各スタックフレームは以下の情報で構成されています:

    1. アドレス:
      各スタックフレームのメモリアドレスが表示されます。

    2. 関数名と引数:
      スレッドが呼び出している関数と、渡されている引数が表示されます。例えば、lwp_parkcond_waitなどのシステムコールやユーザー定義の関数がリストアップされています。

    3. ユーザー定義関数(アプリケーションコード):
      スタックの最下部に、アプリケーションコードで呼ばれた関数(例: myapp_func1, myapp_func2, myapp_func3)が表示されます。ここが通常、バグの発生源となる場所です。

  • pstackは、シンプルかつ強力なツールで、Solarisや他のUNIX系システムでクラッシュしたアプリケーションやプロセスのスタックトレースを解析するために使用されます。

   Pstackの利点

    簡単にプロセスやコアダンプのスタックトレースを取得できるため、デバッグやクラッシュ解析に非常に有効。

    追加のオプション設定が不要で、簡潔なスタックトレース出力を得られる。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

mdb -k

2024年10月21日 | UNIX忘備録

mdb -k core_fileを実行した際に表示される出力は、カーネルクラッシュダンプファイルに依存しますが、一般的な例を示します。mdb -kコマンドは、カーネルモードでmdbデバッガを起動し、クラッシュしたカーネルのスタックやデータ構造を解析するために使用されます。

出力の解説

  • ::status
    クラッシュダンプのステータス情報を表示します。この出力では、クラッシュしたシステムのOSバージョンや、カーネルパニックメッセージ(Fatal error during execution)、ダンプ内容(kernel pages only)などが表示されています。

  • ::stack
    クラッシュしたスレッドのコールスタックを表示します。ここでは、各スタックフレームと関数がリストされています。

  • ::ps
    システム内のプロセスリストを表示します。PID(プロセスID)、UID(ユーザーID)、プロセスの状態(R = 実行中、S = スリープ中)などが含まれます。

  • ::cpuinfo
    CPUごとの詳細情報を表示します。各CPUのスレッドやプロセス、CPUの状態(RNRN = CPUが実行中かどうか)が表示されます。

  • ::findstack -v
    特定のスレッドのコールスタックを詳細に表示します。ここでは、スタックトレースの各関数呼び出しの詳細が表示されます。

  • ::cpu
    CPUの詳細をリストします。各CPUで現在実行中のスレッドやプロセス、CPUが現在スイッチするかどうかの情報が表示されます。

mdb -k core_fileの出力には、クラッシュしたカーネルやプロセスのスタックトレース、システム状態、スレッド、CPUの詳細が含まれています。この情報を利用して、システムクラッシュや異常動作の原因を突き止めることができます。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする