簡體   English   中英

(gdb)p / x等價於gdb python腳本?

[英](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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM