【发布时间】:2013-04-07 23:38:23
【问题描述】:
每次修改观察点时,GDB 都会打印旧值和新值。但是,有时我不想以默认的十进制整数格式打印该值:例如,如果我正在观看 *(unsigned*)$ebp 以调试可能的堆栈溢出(哇,SO...),该值是无意义的,除非以十六进制格式显示(如打印时p/x)。
是否可以为特定观察点设置显示格式?谢谢。
【问题讨论】:
标签: c debugging gdb breakpoints watchpoint
每次修改观察点时,GDB 都会打印旧值和新值。但是,有时我不想以默认的十进制整数格式打印该值:例如,如果我正在观看 *(unsigned*)$ebp 以调试可能的堆栈溢出(哇,SO...),该值是无意义的,除非以十六进制格式显示(如打印时p/x)。
是否可以为特定观察点设置显示格式?谢谢。
【问题讨论】:
标签: c debugging gdb breakpoints watchpoint
是否可以为特定观察点设置显示格式?
如果您希望观察点以十六进制打印,请将其设置为指针的观察点,例如
watch *(char**)$ebp or
watch *(void**)$ebp
【讨论】:
set output-radix 16
请参考这个答案How to make gdb print out all values in hexadecimal mode? 您可以设置由于 gdb 发生的所有类型的打印(可能是因为断点、观察点或您的自定义打印)将具有十六进制格式。
【讨论】: