0

ファイル形式「PA-RISC2.0共有実行可能ファイル」のバイナリがあります。そして、このバイナリを実行してコア ダンプを取得します。スタックトレースがあります。詳細情報を取得するために、シンボル テーブルを抽出して gdb セッションにロードしようとしています。

問題は、シンボル テーブル PA-RISC2.0 SOM ファイル形式を抽出できないことです。コマンド 'odump' および 'nm' はシンボル テーブルを ascii テキストで出力しますが、これは gdb ではロードできません。

Linux では、ELF ファイル形式の場合、「objcopy --keep-only-debug」を使用してシンボル テーブルを抽出できます。

上記のファイル形式の実行可能ファイルからシンボル テーブルを抽出する方法はありますか。

オペレーティング システムは HP-UX 11i です

前もって感謝します。

4

1 に答える 1

0

上記のファイル形式の実行可能ファイルからシンボル テーブルを抽出する方法はありますか。

あなたの質問は、実行可能ファイルからシンボルテーブル情報を何らかの方法で抽出すると、GDB自体が実行可能ファイルから抽出できたものよりも多くの情報がGDBに提供されるという誤った前提に基づいているようです。しません

objcopy --keep-only-debug、デバッグ シンボルを保持したいが、ストリップされた実行可能ファイルを顧客に出荷したい場合に使用できます。デバッグ実行可能ファイルとデバッグ対象のコア ダンプがある場合は役に立ちません。

アップデート:

gdb では、シンボル テーブルをロードできれば、そうしないと不可能なローカル変数の値を取得できます。

はい。ただし、実行可能ファイルからシンボル テーブルをのファイルに抽出する必要はありません。GDB は、追加の手順を実行ずに、実行可能ファイルからシンボル テーブルを直接ロードします。

GDB を正しく呼び出していないと思われます。これをしないでください: gdb -c core. 代わりにこれを行います: gdb /path/to/a.out /path/to/core.

更新 2:

はい、そうですgdb <binary> <core>

その場合、pxdb前処理のステップが抜けているのではないでしょうか? GDB の HP-UX バージョンは、/opt/langtools/bin/pxdbデバッグ情報を GDB が理解できる形式に変換するために自動的に実行されます。/opt/langtools/bin/pxdbしかし、古い GDB を使用しているか、システムにインストールされていない可能性があります。

于 2012-09-08T03:27:54.153 に答える