[英]Viewing a dynamically-allocated array with the Xcode debugger?
假设我在C ++中有一个数组:
double* velocity = new double[100];
使用GDB命令行,我可以使用以下命令查看此数组:
> print *velocity @ 100
它将打印一个格式良好的列表,列出数组中的所有double值。
但是,在使用Xcode调试器时,它所做的最多就是将其视为指向单个double值的指针,并在变量列表中显示velocity [0]。
这使得它成为一个真正的PITA来调试包含大型动态分配数组的程序。 必须有一些方法来告诉Xcode“这是一个指向长度为100的数组的指针”,并让它显示这样的东西。 有人知道这是什么吗?
我认为我的答案对于旧答案来说是一个很好的补充。
新版本的Xcode使用lldb
调试器作为默认工具而不是gdb
。
根据这个页面 :
随着Xcode 5的发布,LLDB调试器成为OS X调试体验的基础。
所以对于Xcode从版本5开始,我使用这个lldb
命令:
memory read -t int -c8 `array_name`
哪里:
8
- 数组中的元素数
array_name
- 数组的名称
int
- 数组的类型
执行此命令的结果将是这样的:
(lldb) memory read -t int -c8 array
(int) 0x7fff5fbff870 = 7
(int) 0x7fff5fbff874 = 6
(int) 0x7fff5fbff878 = 9
(int) 0x7fff5fbff87c = 10
(int) 0x7fff5fbff880 = 1
(int) 0x7fff5fbff884 = 8
(int) 0x7fff5fbff888 = 4
(int) 0x7fff5fbff88c = 3
您可以使用gdb语法作为表达式:
'*velocity @ 100'
(表达式:) 从Xcode 10开始,您可以右键单击“ velocity
,选择“将值视为...”,然后选择“自定义类型”。 然后将其转换为(double(&)[100]) *velocity
并在GUI中显示数组。
不幸的是,GUI是有限的,你需要融合GDB魔法的完美组合才能完成任务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.