如何在gdb中打印wstring?
答案 0 :(得分: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
只需使用wc
或wc_print
输入std::wstring
(wchar_t*
的缩写)。
答案 1 :(得分:1)
假设您有一个std::wstring str
。以下内容适用于gdb:
call printf("%ls", str._M_data())
(printf中的-l选项使它成为一个长字符串,我相信你需要“call
”语句,因为普通的gdb printf不喜欢那个选项。)
答案 2 :(得分:0)