程式變數
檢視檔案中某變數的值:
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...