我想为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会给我这个变量的内容。需要帮助。
答案 0 :(得分:1)
在命令后端,我想以更相关的格式阅读一些变量的内容并打印数据给我。
使用Python pretty-printer可能达到相同的结果非常。这不需要重建GDB,很容易正确使用,并为GDB的内部提供了一个安全的接口。
我无法找到哪些API会为我提供此变量的内容。
target_read_memory()
是最低的API,可以为您提供给定地址的内存内容。