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 回答