gdb顯示變數 和 陣列

2021-07-09 11:38:02 字數 1222 閱讀 6384

程式變數

檢視檔案中某變數的值:

file::variable

function::variable

可以通過這種形式指定你所想檢視的變數,是哪個檔案中的或是哪個函式中的。例如,檢視檔案f2.c中的全域性變數x的值:

gdb) p 'f2.c'::x

檢視陣列的值

有時候,你需要檢視一段連續的記憶體空間的值。比如陣列的一段,或是動態分配的資料的大小。你可以使用gdb的「@」操

作符,「@」的左邊是第乙個記憶體的位址的值,「@」的右邊則你你想檢視記憶體的長度。例如,你的程式中有這樣的語句:

int *array = (int *) malloc (len * sizeof (int));

於是,在gdb除錯過程中,你可以以如下命令顯示出這個動態陣列的取值:

p *array@len

二維陣列列印

p **array@len

如果是靜態陣列的話,可以直接用print陣列名,就可以顯示陣列中所有資料的內容了。

-gdwarf-2 -g3 

顯示巨集定義

顯示全部的結構體

(gdb) set print elements 0

(gdb) p cp->spec          

$36 = 0x8057080 "% %(cpp_options)}      %\t\t%(cpp_options) %b.i \n\t\t    cc1 -fpreprocessed %b.i %(cc1_options)}\t  % %(cpp_options) % |\n\t\t    cc1 -fpreprocessed % %(cc1_options)}\t    % %(cpp_options) %(cc1_options)}}}}        %}}}"

通常在gdb除錯時要列印出一些字串的內容,通過

p str@str_len  列印字串時,通常有長度的限制,我測試linux機器上預設為200個,但實際輸出的長度str_len可能大於該值。

結果不能夠完全輸出,而進行了省略,通過命令

set print element 0就可以了。

p/xx 按十六進製制格式顯示變數。

d 按十進位制格式顯示變數。

u 按十六進製制格式顯示無符號整型。

o 按八進位制格式顯示變數。

t 按二進位制格式顯示變數。

a 按十六進製制格式顯示變數。

c 按字元格式顯示變數。

f 按浮點數格式顯示變數。

GDB之顯示陣列

gdb之顯示陣列資訊 本文將介紹如何使用gdb來顯示陣列的資訊。為了顯示結構體陣列的資訊,我們定義了結構體foo typedef struct foo foo 同時為了更美觀的顯示結構體資訊,這裡預設執行了以下命令 gdb set print pretty on 以縮排格式顯示結構體,且每個元素佔一...

指標變數和陣列

int arr 2 int arr int i arr 0 arr 1 23 char str abc 字元內容儲存在堆上 char str1 字元內容儲存在棧上第一種情況 字元內容會儲存在堆上,並在棧裡儲存str指標變數,變數值為字元在堆上的首位址。第二種情況 字元內容會儲存在棧上,但是不會有額外...

PowerShell變數 常量和陣列

變數 power shell是一種弱型別語言,所謂弱型別語言是指不用區分資料型別,弱型別的特徵決定了powershell使用變數的資料型別直接賦值,只需要在變數名前加上 變 量賦值公 式 變數賦值公式 變數賦值 公式 變數名 值 環境變數 system.environment setenvironm...