当前位置:  开发笔记 > 编程语言 > 正文

使用Xcode调试器查看动态分配的数组?

如何解决《使用Xcode调试器查看动态分配的数组?》经验,为你挑选了2个好方法。

假设我在C++中有一个数组:

double* velocity = new double[100];

使用GDB命令行,我可以使用以下命令查看此数组:

> print *velocity @ 100

它将打印一个格式良好的列表,列出数组中的所有double值.

但是,在使用Xcode调试器时,它所做的最多就是将其视为指向单个double值的指针,并在变量列表中显示velocity [0].

这使得它成为一个真正的PITA来调试包含大型动态分配数组的程序.必须有一些方法来告诉Xcode"这是一个指向长度为100的数组的指针",并让它显示这样的东西.有人知道这是什么吗?



1> Alexander My..:

我认为我的答案对于旧答案来说是一个很好的补充.

新版本的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



2> mfazekas..:

您可以使用gdb语法作为表达式:

    使用"运行/显示/表达式..."菜单显示表达式窗口

    '*velocity @ 100'在窗口底部输入(表达式:)


这在Xcode 4中有用吗?我只是得到"无效的表达"
推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有