2012-04-02 19 views
1

cまたはC++の場合コアダンプをデバッグするとき、つまりコアダンプファイルを残してコアファイルを使用してデバッグしようとすると、スタックトレースは関数呼び出しのみを表示します。コアダンプをデバッグするときのソース行

などのため

:dbxコマンドまたはgdbのリストコマンドで実行中のプロセスをデバッグ中に

list Display lines of a source file

は、現在に見ながら、我々は選択肢を持っていないのと同じ方法をexecution.in下のコードの一部を提供しますコアダンプ? 私は現在作業中ですsolaris mdb

答えて

0

-gオプションを付けてコンパイルすると、ソース行を表示できます。 dbxでは、useコマンドを使用してdbxソースディレクトリを設定できます。

list(l)コマンドを使用すると、ソース行を表示できます。

dbxコマンドとgdbコマンドの使用方法については、helpコマンドを参照してください。

0

dbxでuseコマンドを使用してソースパスを適切に設定した場合、または-Iオプションで起動した場合は、ソース行を読み込む際にコアダンプのデバッグと通常のプロセスの違いはほとんどありません。

2

場合は、ソースコードの行番号の詳細とコアファイルからリスト対応するソースを提供する必要があり、GDBでlistコマンド:。

  • 実行が有効になってデバッグシンボル(例えばgccとg単位で-gでコンパイルされた++ )
  • 実行ファイルの非取り除いたバージョンが利用可能である(すなわち。stripを実行することによって除去デバッグ情報)
  • デバッガは、関連するソースファイルを見つけることができましたしていない

デバッガは、行番号情報がデバッグシンボルの一部を形成するため、ソースファイルを見つけることができなくても、ファイルと行番号を提供することができます。この情報はbt(backtrace)コマンドとinfo symbolコマンドで利用できます。

コアファイルが削除された実行可能ファイルから生成されたとしても、削除されていないバージョンにアクセスできる限り、コアファイルを指定するだけでなくgdbにロードすることもできます。

gdb manualの第13章と第15章を参照して、ソースファイルへのgdbアクセスを助けてください。

関連する問題