gdb的print命令只能列印基本資料型別,像qstring這樣的複雜型別就不行了。
如果在除錯過程中(命令列,或者xcode中)不能看qstring的值,豈不是很不爽。幸好,gdb提供了擴充套件功能,可以自定義巨集命令。
把自定義的命令放到$home/.gdbinit檔案中,每次啟動gdb時就可以自動載入了。
下面的**是從網上摘錄的,直接複製到$home/.gdbinit檔案中就可以了。原文(
defineprintqstring
printf "(qstring)0x%x (length=%i):\"",&$arg0,$arg0.d->size
set $i=0
while $i < $arg0.d->size
set $c=$arg0.d->data[$i++]
if $c < 32 || $c > 127
printf "\\u0x%04x", $c
else
printf "%c", (char)$c
endend
printf "\"\n"
end使用方法與print一樣。
Qt中gdb除錯列印log
背景 windows上qt程式無故crash,隨機crash不好定位出錯的原因,故使用gdb追蹤錯誤資訊。前提 生成debug版本的exe程式。步驟 開啟minggw控制台。進入待除錯程式資料夾,cd d code build test desktop qt 5 9 8 mingw 32bit de...
gdb列印記憶體位元組
x 16bx address 單位元組16進製制列印address位址處的長度為16的空間的記憶體,16表示空間長度,不是16進製制,x表示16進製制,b表示byte單位元組 詳解 x n f u是可選的引數。n是乙個正整數,表示需要顯示的記憶體單元的個數,也就是說從當前位址向後顯示幾個 記憶體單元...
gdb列印記憶體位元組
x 16bx address 單位元組16進製制列印address位址處的長度為16的空間的記憶體,16表示空間長度,不是16進製制,x表示16進製制,b表示byte單位元組 詳解 x n f u是可選的引數。n是乙個正整數,表示需要顯示的記憶體單元的個數,也就是說從當前位址向後顯示幾個 記憶體單元...