【发布时间】:2019-12-18 14:38:16
【问题描述】:
我想看看是否可以将 gdb 中的变量类型作为字符串获取。例如,如果
int i = 1;
MyStruct *ms = NULL;
然后我想得到类似的东西
(gdb) <the-command-I-am-looking-for> i $local_var_i
(gdb) p $local_var_i
$local_var_i = "int"
(gdb) <the-command-I-am-looking-for> ms $local_var_ms
(gdb) p $local_var_ms
$local_var_ms = "MyStruct *"
我可能在上述代码段之前分配了局部变量,命令可能是自定义命令。
这样的事情可能吗?我怎样才能做到这一点?
编辑澄清: 我的程序中有一组函数可以根据它们所服务的类型更改名称(我知道这不是最好的方法,但我无法更改)。我想编写一个 gdb 函数,我可以只输入变量,其余的将自动完成,无需我的干预。最好,我也想避免 if/else if 的墙。
【问题讨论】:
-
这能回答你的问题吗? gdb: show typeinfo of some data
-
不,它没有。我已经看到了这个答案。我想将变量的类型作为字符串自动使用,我不想手动复制它。
-
您需要解决的实际问题是什么?为什么需要将类型作为调试器变量中的字符串?如果只是出于好奇也没关系(但请在问题中说明),否则最好直接询问您遇到的问题,而不是询问可能的解决方案。请阅读the XY problem,并思考它与您的问题有何关系。
-
我的程序中有一组函数可以根据它们所服务的类型更改名称(我知道这不是最好的方法,但我无法更改)。我想编写一个 gdb 函数,我可以只输入变量,其余的将自动完成,无需我的干预。最好,我也想避免 if/else if 的墙
-
为了清楚起见,给定一个类型为
MyCarType的指针p,您想要在gdb 中推断名称polymethod_MyCarType(MyCarType* ptr)吗?