![](/img/trans.png)
[英]How do I make Qt Creator's debugger show the contents of C++ vectors in OS X?
[英]In Clion's debugger, how do I show the entire contents of an int array
現在它只顯示數組的第一個元素,但我想要數組中所有元素的可視化。 我認為 Clion 正在使用 GDB。
編輯:我特指堆上的數組。 堆棧上的數組可以可視化。
不幸的是,CLion 目前不支持此類功能。 根據JetBrains 員工的建議,您可以使用一種解決方法。 在 Evaluate / Watches 窗口中使用以下表達式:
(MyType[128])myArray
您可以使用任意數組大小; 任何對你有用的東西。
如果數組存儲在void *
變量中,則需要做一些更棘手的事情:
(MyType[128])*(char*)myArray
實際上,底層調試器理解的任何語法都應該有效。 例如,在 GDB 的情況下,您可以使用*array@size
,其中array
可以是任何指針表達式, size
可以是任何(正)整數表達式,並且兩者都可以包括變量、函數調用、寄存器以及 GDB 理解的任何內容. 像這樣的事情是有效的,例如:
*((int*)$rsp - 0x100)@get_size(data)
您可以使用模板和參考:
template<int N>
void foo1(int (&arr)[N])
{
...
}
如果要將數組傳遞給其他函數,則傳遞的函數還應使用模板和數組引用:
template<int N>
void foo2(int (&arr)[N])
{
...
}
template<int N>
void foo1(int (&arr)[N])
{
foo2(arr);
}
此方法允許您在 clion 中查看 int 數組的全部內容
我今天遇到了同樣的問題,但相反,我有一個指針數組;
pthread_t** pthreads = (pthread_t**) malloc(//malloc args)
thread_count = 0;
while(thread_count < 10) {
pthread_t* myThread = (pthread_t*) malloc(//malloc args)
pthreads[thread_count] = myThread;
thread_count++;
}
我無法在 CLion gdb 中看到此內存的分配,因為它查看的是指向指針的指針。
我通過定位數組的第一個元素 (pthreads[0]) 然后從那里查看接下來的n
元素來解決這個問題。
為此,您需要轉換類型 (pthread_t*[]),然后使用目標內存,即 pthreads[0](即第一個元素)
注意:我使用帶有 0 的calloc
來設置我的pthreads
數組。 這張照片顯示了如何在 CLion 調試器中的位置 0 正確分配內存。
我寫這篇文章是因為上面的文章都沒有讓我得出我在這里寫的結論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.