[英]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.