在gdb中列印QString

2021-05-28 05:49:20 字數 560 閱讀 2200

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是乙個正整數,表示需要顯示的記憶體單元的個數,也就是說從當前位址向後顯示幾個 記憶體單元...