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

在GDB中,如何打印对象,使其数据成员按字母顺序排列?,gdb,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)打印对象

例如,默认情况下,它将类似于

(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)打印对象
$1 = {
大象=0xb7d28960,
榴莲=0x0,
茄子=0x809ed58英寸,
花生=1080,
洋葱=0x0,
ice=0xb7d28c20,
小麦=0x0,
树莓=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
}
(gdb)打印对象
$1 = {
榴莲=0x0,
茄子=0x809ed58英寸,
大象=0xb7d28960,
ice=0xb7d28c20,
洋葱=0x0,
花生=1080,
树莓=0x0,
小麦=0x0
}
也就是说,数据成员按字母顺序列出


谢谢。

gdb内置的方法无法做到这一点

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


也就是说,保持现状有两个原因。首先,当前顺序反映了源代码中实际写入的内容。其次,当前顺序还显示对象内存中的布局。这两种方法都有助于减少混淆。

gdb内置的方法无法做到这一点

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

也就是说,保持现状有两个原因。首先,当前顺序反映了源代码中实际写入的内容。其次,当前顺序还显示对象内存中的布局。这两件事都有助于减少混乱