gdb打印qstring内容(for qt5)

1、gdb中无法直接打印出QString的原始字符串,可以通过自定义gdb函数方式打印出来,网上能搜出来的都已经过时了,不适应最新的QString内存结构,这里提供一个最新的(for Qt5):

define pqs
    printf "(QString)0x%x (length=%i, offset=%i, ref=%x): "",&$arg0,$arg0.d->size,$arg0.d->offset,&$arg0.d->ref
    set $i=0
    set $off=$arg0.d->offset
    set $base=(void*)(&$arg0.d->ref) + $off
    while $i < $arg0.d->size
        set $c=((short*)$base)[$i++]
        if $c < 32 || $c > 127
                printf "\u0x%04x", $c
        else
                printf "%c", (char)$c
        end
    end
    printf ""
"
end

2、将上面内容存在~/.gdbinit 文件中, 重启gdb或者执行在gdb中执行source ~/.gdbinit。

3、使用方式: 
   在需要打印QString的地方执行 pqs xxx,  xxx为QString的变量名。
   (gdb) pqs path
   (QString)0xffffb348 (length=9, offset=24, ref=210c0e0): "Shortcuts"
原文地址:https://www.cnblogs.com/gakusei/p/14422456.html