簡體   English   中英

使用Xcode調試器查看動態分配的數組?

[英]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語法作為表達式:

  1. 使用“運行/顯示/表達式...”菜單顯示表達式窗口
  2. 在窗口底部輸入'*velocity @ 100' (表達式:)

從Xcode 10開始,您可以右鍵單擊“ velocity ,選擇“將值視為...”,然后選擇“自定義類型”。 然后將其轉換為(double(&)[100]) *velocity並在GUI中顯示數組。

不幸的是,GUI是有限的,你需要融合GDB魔法的完美組合才能完成任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM