3

gdb ソース コードに新しいコマンドを追加したいのですが、add_cmd を使用してそれを行うことができます。

コマンド バックエンドで、いくつかの変数の内容を読み取り、より適切な形式でデータを出力したいと考えています。

次のコードを使用して変数アドレスを取得できます。

struct symbol *sym;

sym = lookup_symbol ("my_variable_name", get_selected_block (&context_pc), VAR_DOMAIN, NULL);

printf_filtered ("Symbol %s is ", sym->ginfo.name);
printf_filtered (" at address 0x%x\n", SYMBOL_VALUE(sym));

これにより、変数のアドレスが得られます。

(gdb) my_command
Symbol my_variable_name is  at address 0x8049684

ただし、この変数の内容を提供する API を見つけることができません。同じことで助けが必要です。

4

1 に答える 1

1

コマンド バックエンドで、いくつかの変数の内容を読み取り、より適切な形式でデータを出力したいと考えています。

Python pretty-printerを使用して同じ結果を達成できる可能性は非常に高いです。これは、GDB の再構築を必要とせず、正しく取得するために簡単に操作でき、GDB の内部への安全なインターフェースを提供します。

この変数の内容を提供する API を見つけることができません。

target_read_memory()指定されたアドレスのメモリの内容を提供する最も低い API です。

于 2012-12-21T04:22:39.087 に答える