我需要在CLion中添加十六进制格式的手表。
ltoa(variable, 16)
至少在我的系统上无效。
在Java / Python中,我可以有一个解决方法:为我的类编写一个自定义toString()
/ __str__
并让它以我需要的方式显示。 gdb
有p/x
。我如何在CLion中做到这一点?
修改:如果我在代码中定义ltoa(variable, 16)
,则ltoa
有效,因为它并不总是存在于标准库中。
答案 0 :(得分:7)
set output-radix 16
您可以将此设置为名为.gdbinit
的文件中的默认选项,您可以将其放在主目录中,或者从中启动GDB的工作目录(例如,项目根目录)。
答案 1 :(得分:1)
他们添加了十六进制视图作为实验功能:Hexadecimal view
要启用:
现在,十六进制格式显示在“调试”工具窗口的“变量”窗格和编辑器的内联变量视图中。
答案 2 :(得分:0)
......精制配方后,我明白了。
我写了自己的char *lltoa(long long value, int radix)
函数。我现在可以在手表中使用它。
更新:在respective feature request中,Chris White在lldb上找到了OS X的解决方法:
我决定进行更多挖掘,并找到了在OS X上设置lldb的方法 强制HEX输出为unsigned char数据类型:
type format add –format hex "unsigned char"
如果你想让这个设置持久,你也可以创建一个 .lldbinit文件并将此命令添加到它。一旦你做了这个CLion 将以HEX格式显示此数据类型。
这使得此类型的所有变量都以十六进制显示。
更新2 :我的第一个解决方法非常脏,这里更好。
您可以将格式分配给更具体的类型。调试器跟踪类型继承。因此,向hex
添加uint8_t
格式不会影响unsigned char
。您可以微调显示。
您也可以为结构分配格式。这是我.lldbinit
的一个例子:
type format add --format dec int32_t
# https://lldb.llvm.org/varformats.html
type summary add --summary-string "addr=${var.address} depth=${var.depth}" Position