27

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

double* velocity = new double[100];

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

> print *velocity @ 100

它将打印出数组内所有双精度值的格式良好的列表。

但是,当使用 Xcode 调试器时,它最多会将其视为指向单个双精度值的指针,并在变量列表中显示 velocity[0]。

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

4

4 回答 4

37

我认为我的回答将是对旧回答的一个很好的补充。

新版本的 Xcode 使用lldb调试器作为默认工具,而不是gdb.

根据此页面

随着 Xcode 5 的发布,LLDB 调试器成为 OS X 调试体验的基础。

因此,对于 Xcode 5 及以上版本,我使用以下lldb命令:

内存读取 -t int -c8 `array_name`

其中:
8- 数组中的元素数量
array_name- 数组名称 - 数组
int类型

该命令的执行结果将是这样的:

(lldb) 内存读取 -t int -c8array
(int) 0x7fff5fbff870 = 7
(int) 0x7fff5fbff874 = 6
(int) 0x7fff5fbff878 = 9
(int) 0x7fff5fbff87c = 10
(int) 0x7fff5fbff880 = 1
(int) 0x7fff5fbff884 = 8
(int) 0x7fff5fbff888 = 4
(int) 0x7fff5fbff88c = 3

于 2014-05-01T02:15:42.367 回答
13

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

  1. 使用 Run/Show/Expressions... 菜单显示表达式窗口
  2. '*velocity @ 100'在窗口底部输入(表达式:)
于 2009-01-28T19:58:30.030 回答
13

从 Xcode 10 开始,您可以右键单击velocity,选择“View value as...”,然后选择“Custom Type”。然后将其转换为(double(&)[100]) *velocity并在 GUI 中显示该数组。

于 2019-06-28T00:15:10.413 回答
-2

不,不幸的是 GUI 是有限的,你需要混合 GDB 魔法来完成工作。

于 2009-01-27T20:13:05.227 回答