在Clion的调试器中,如何显示int数组的全部内容

Emb*_*ugs 23 c c++ debugging gdb clion

现在它只显示数组的第一个元素,但我想要显示数组中的所有元素.我认为Clion正在使用GDB.

编辑:我特指堆上的数组.可以可视化堆栈上的数组.

小智 35

cubuspl42的答案适用于GDB.但是如果你使用LLDB作为调试器在Mac上,那么正确的方法是

(MyType(*)[128])myArray
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • 节省我一个晚上的时间 (9认同)

cub*_*l42 26

不幸的是,CLion目前不支持此类功能.根据JetBrains员工的建议,您可以使用解决方法.在"评估/监视"窗口中,使用以下表达式:

(MyType[128])myArray
Run Code Online (Sandbox Code Playgroud)

你可以使用任意数组大小; 什么对你有用.

如果数组存储在void *变量中,则需要做一些更棘手的事情:

(MyType[128])*(char*)myArray
Run Code Online (Sandbox Code Playgroud)

请提出这个问题,以增加获得真正解决方案的机会.您可以通过单击页面右侧的小拇指向上图标来完成此操作.

  • 注意 (MyType[128])myArray 适用于 LLDB。对于 GDB,使用 (MyType[128])*myArray 以获得正确的结果。 (10认同)

Evg*_*nZh 5

实际上,底层调试器理解的任何语法都应该有效。例如,在 GDB 的情况下,您可以使用*array@size, wherearray可以是任何指针表达式,size也可以是任何(正)整数表达式,并且两者都可以包括变量、函数调用、寄存器以及 GDB 理解的任何内容。像这样的事情是有效的,例如:

*((int*)$rsp - 0x100)@get_size(data)
Run Code Online (Sandbox Code Playgroud)