質問

Solaris で pstack を使用してコア ダンプ ファイルを分析しています

他にどのようにして Solaris からのコア ダンプを分析できますか?

これを行うにはどのようなコマンドを使用できますか?

ダンプから他にどのような情報が得られますか?

役に立ちましたか?

解決

Solaris モジュラー デバッガ、mdb、または dbx を使用できます。mdb には、SUNWmdb (64 ビット バージョンの場合は SUNWmdb x) パッケージが付属しています。

コア ファイルは、実行中のプロセスがクラッシュしたときのイメージです。

アプリケーションがデバッグ フラグを使用してコンパイルされたかどうかに応じて、スタックのイメージを表示できるため、どの関数がコアにその関数に渡されたパラメータの値を取得させたかを知ることができます。変数、割り当てられたメモリゾーン...

最近の Solaris バージョンでは、coreadm コマンドを使用してコア ファイルに何を含めるかを構成できます。たとえば、プロセスが接続されていたマップされたメモリ セグメントを持つことができます。

参照する MDB ドキュメント そして dbx ドキュメント. 。の GDB クイックリファレンス GDB の基本を理解していれば、このカードも役に立ちます。

他のヒント

この質問に対する答えは、簡単なレシピから始める必要があると思います。

dbx の場合、レシピは次のとおりです。

% dbx a.out core
(dbx) where
(dbx) threads
(dbx) thread t@3
(dbx) where

コア ダンプが自分で作成または構築したプログラムからのものである場合は、実行中のアプリケーションのデバッグに通常使用するデバッガを使用します。これらはすべてコア ファイルをロードできるはずです。デバッガにこだわりがなく、Solaris を使用している場合は、dbx をお勧めします。パッチ付きの最新 FCS バージョンの Sun Studio を入手するか、最新の Express バージョンの Sun Studio を入手すると役立ちます。また、コア ファイルが作成されたのと同じシステム上のデバッガにコア ファイルをロードできると非常に便利です。ライブラリ内のコードがコア ファイルの作成時と異なる場合、ライブラリを経由するときにスタック トレースは役に立ちません。デバッガは、libthread とランタイム リンカーのデータ構造を理解するために OS ヘルパー ライブラリも使用するため、コア ファイルを別のマシンにロードする必要がある場合は、OS にインストールされているヘルパー ライブラリが OS のシステム データ構造と一致していることを確認する必要があります。 OS。これらのシステム ライブラリについて知りたくなかったすべてのことは、数年前に書かれたホワイト ペーパーで知ることができます。

http://developers.sun.com/solaris/articles/DebugLibraries/DebugLibraries_content.html

私の意見では、ネイティブの Solaris デバッガよりも基本的なタスクを学ぶのが簡単なので、最初に gdb を試してみることをお勧めします。

GDBが使えるようになります。

ダンプの前に試行された呼び出しを行うことができます。

http://sourceware.org/gdb/

http://en.wikipedia.org/wiki/GDB

ソースがあることは素晴らしいことであり、エラーをより正確に再現できれば、これをデバッグに使用できるためです。

過去に私にとってはとてもうまくいきました。

フラグ このコマンドは、コア ダンプ時の各スレッドの状態を判断するのにも役立ちます。このようにして、多くの場合、問題を正確に特定できます。

dbx デバッガーを使用してプロセス イメージにアタッチします。

dbx [実行ファイル名] [コアダンプファイル名]

コアがダンプされてから実行可能ファイルに変更が加えられていないことが重要です (つまり、再建されなかった)。

スタック トレースを参照して、dbx コマンド「where」を使用してプログラムがクラッシュした場所を確認できます。

コマンド「up」および「down」を使用してスタックを上下に移動したり、「where」の出力に表示される番号を使用して「frame [number]」を使用して正確なスタック フレームにジャンプしたりできます。

「print [expr]」コマンドを使用すると、変数または式の値を出力できます。

楽しむ。

Solaris x86 ボックスで dbx を見つけました。

/opt/SUNWspro/bin/dbx

乾杯!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top