如何在gdb中打印wstring?
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
只需输入 wc
(代表 wc_print
),然后输入 std::wstring
或 wchar_t*
。
std::wstring str
。以下内容应该在gdb中有效:call printf("%ls", str._M_data())
printf 中的 -l 选项使其成为长字符串,我相信你需要 "call
" 语句,因为普通的 gdb printf 不喜欢那个选项。