[英](gdb) p/x equivalent in gdb python script?
主要结构是
struct my_struct
{
int x;
void* md_template;
void* md_capture_buff;
....
};
当我在做
(gdb) p ((struct my_struct *)dev_base->next->priv)
输出是这样的
$1 = {
x= 15 '\017'
md_template = ,
md_capture_buff =
}
当我用P / X做它:
(gdb) p/x ((struct my_struct *)dev_base->next->priv)
输出是这样的
$1 = {
x= 0xf;
md_template =0x410027001a50 ,
md_capture_buff = 0x41002c0c5490
}
在gdb-python中:
python val = gdb.parse_and_eval('((struct my_struct *)dev_base->next->priv)')
python print val
输出为:
$1 = {
x= 15 '\017'
md_template = ,
md_capture_buff =
}
那么如何在gdb-python中写与p / x等效的东西呢? 还是如何在python脚本中以python val = gdb.parse_and_eval('((struct my_struct *)dev_base->next->priv)').address
的地址获取'md_capture_buff'的地址?
您可能已关闭“设置打印地址”。 我不会的 str运算符遵守此设置可以说是一个错误。
除了直接调用“ p / x”之外,没有什么好方法可以复制它。 请参阅gdb.execute。
您可以使用[]获取任何字段的值。 喜欢
val = something['fieldname']
IMO,通常最好使用API而不是parse_and_eval。 也就是说,您可以直接从Python强制转换,查找字段等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.