【发布时间】:2010-09-11 11:07:08
【问题描述】:
如何在 gdb 中打印 wstring?
【问题讨论】:
如何在 gdb 中打印 wstring?
【问题讨论】:
假设您有一个std::wstring str。以下应该在 gdb 中工作:
call printf("%ls", str._M_data())
(printf中的-l选项使它成为一个长字符串,我相信你需要“call”语句,因为普通的gdb printf不喜欢那个选项。)
【讨论】:
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
结束
只需输入 wc(wc_print 的缩写)和 std::wstring 或 wchar_t*。
【讨论】: