如何在gdb中打印wstring

san*_*iyn 9 gdb wstring

如何在gdb中打印wstring?

Ben*_*ant 8

call printf %ls有时只能工作,但要在gdb 6.3中完全工作,你需要在这里显示的void强制转换和换行\n:

call (void)printf("\"%ls\"\n",str.c_str())

这是一个更可靠的命令,你可以放在你的.gdbinit中,它也显示非ASCII代码点:

define wc_print
echo "
set $c = (wchar_t*)$arg0
while ( *$c )
  if ( *$c > 0x7f )
    printf "[%x]", *$c
  else
    printf "%c", *$c
  end
  set $c++
end
echo "\n
end

用a 或者输入wc(简称wc_print).std::wstringwchar_t*

有关详细信息,请访问http://www.firstobject.com/wchar_t-gdb.htm


Jes*_*der 1

假设你有一个std::wstring str. 以下应该在 gdb 中工作:

call printf("%ls", str._M_data())
Run Code Online (Sandbox Code Playgroud)

(printf 中的 -l 选项使其成为一个长字符串,我相信您需要“ call”语句,因为普通的 gdb printf 不喜欢该选项。)