如何在gdb中打印wstring
答
假设你有一个std::wstring str
。以下应在gdb工作:
call printf("%ls", str._M_data())
(在printf的-l选项使得它的长字符串,我相信你所需要的“call
”语句,因为普通的printf GDB不喜欢该选项。)
答
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*
。在http://www.firstobject.com/wchar_t-gdb.htm
的更多细节