0

特定の環境向けにカスタマイズされた gdb ツールを実装しようとしています。Linux-Centos オペレーティング システムがあります。

いくつかのカスタマイズで gdb 機能を実装しようとしています。ツールは PID (既に実行中のプロセス) にアタッチされ、デバッグ セッションが開始されます。シンボル情報 (シンボル テーブル) を読み取り、可能な限り多くのシンボル情報 (主にデータ型、アドレス、サイズ) を出力したいと考えています。

readelf、gdb のファイル コマンドを使用してシンボル テーブルを読み取ることができ、ローカル/グローバル変数に関連するいくつかの情報を出力することができます。しかし、変数のアドレスとサイズを出力する正確なコマンドを見つけることができません。

4

1 に答える 1

1

gdbの式でptypeコマンドとsizeofを使用できます。

(gdb) ptype exit
type = int ()
(gdb) print sizeof(argc)
$1 = 4

もちろん、これには、シンボルテーブルだけでなくdebuginfoも使用できる必要があります。たとえば、ELFの場合、.shstrtab.symtab.strtabだけでなく、.debug_ {aranges、info、abbrev、...}セクションも必要です。

于 2013-01-03T03:40:14.337 に答える