为什么可以使用gdb打印数组但不能打印结构数组?

时间:2016-10-25 17:42:19

标签: c gdb

我为gdb编写了一个python函数来打印 数组以节省时间,每次都输入相同的行。

define print_array
    print *($arg0)@(sizeof($arg0)/ sizeof($arg0[0])
end

它按预期工作,但当我尝试打印结构数组时,我收到以下错误:

>>> print_array opcode_list 
A syntax error in expression, near `'.
>>> 

当我手动输入时,它可以正常工作。

>>> print *(opcode_list)@(sizeof(opcode_list)/sizeof(opcode_list[0]))
$2 = {[0] = {
    opcode_str = 0x401484 "halt", 
    output = 0
  }, [1] = {
    opcode_str = 0x401489 "pushc", 
    output = 1
  }, ...

有人可以解释一下,我的错是什么? 并且还给我一个提示/更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

您似乎错过了)

define print_array
    print *($arg0)@(sizeof($arg0)/ sizeof($arg0[0]))
end