如何在 gdb 中打印 wstring?
sanxiyn
问问题
8129 次
3 回答
8
call printf %ls
有时只能工作,但要让它在 gdb 6.3 中工作,你需要这里显示的强制转换void
和换行\n
:
调用 (void)printf("\"%ls\"\n",str.c_str())
这是一个更可靠的命令,您可以将其放入您的 .gdbinit 中,该命令还显示非 ASCII 代码点:
定义 wc_print 回声“ 设置 $c = (wchar_t*)$arg0 而 ( *$c ) 如果 ( *$c > 0x7f ) printf "[%x]", *$c 别的 printf "%c", *$c 结尾 设置 $c++ 结尾 回声“\n 结尾
只需使用 a或输入wc
(缩写) 。wc_print
std::wstring
wchar_t*
于 2009-09-10T16:48:49.287 回答
1
假设你有一个std::wstring str
. 以下应该在 gdb 中工作:
call printf("%ls", str._M_data())
( printf 中的 -l 选项使它成为一个长字符串,我相信您需要 " call
" 语句,因为普通的 gdb printf 不喜欢该选项。)
于 2008-09-19T21:45:10.350 回答