在GDB中,如何打印对象以使其数据成员按字母顺序列出?

时间:2015-12-06 10:59:26

标签: gdb

例如,默认情况下它会像

(gdb) print obj
$1 = {
  elephant = 0xb7d28960 <_IO_2_1_stderr_>,
  durian = 0x0,
  eggplant = 0x809ed58 "",
  peanut = 1080,
  onion = 0x0,
  ice = 0xb7d28c20 <_IO_2_1_stdin_>,
  wheat = 0x0,
  raspberry = 0x0
}

如何使其成为

(gdb) print obj
$1 = {
  durian = 0x0,
  eggplant = 0x809ed58 "",
  elephant = 0xb7d28960 <_IO_2_1_stderr_>,
  ice = 0xb7d28c20 <_IO_2_1_stdin_>,
  onion = 0x0,
  peanut = 1080,
  raspberry = 0x0,
  wheat = 0x0
}

即,数据成员按字母顺序列出。

感谢。

1 个答案:

答案 0 :(得分:0)

没有办法在gdb中内置这个。

如果你真的需要这样做,你可以编写一些Python代码来打印你喜欢的对象。您可以编写一个类似print的新命令,也可以编写一个识别结构并对成员进行排序的漂亮打印机。

也就是说,有两个理由让事情保持原样。首先,当前订单反映了源中实际写入的内容。其次,当前顺序还显示了对象内存中的布局。这两件事都有助于减少混淆。