GDB内部:获取可变内容

时间:2012-12-19 23:58:06

标签: api gdb internals

我想为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会给我这个变量的内容。需要帮助。

1 个答案:

答案 0 :(得分:1)

  

在命令后端,我想以更相关的格式阅读一些变量的内容并打印数据给我。

使用Python pretty-printer可能达到相同的结果非常。这不需要重建GDB,很容易正确使用,并为GDB的内部提供了一个安全的接口。

  

我无法找到哪些API会为我提供此变量的内容。

target_read_memory()是最低的API,可以为您提供给定地址的内存内容。