如何在gdb中打印wstring

时间:2008-09-19 21:11:05

标签: gdb wstring

如何在gdb中打印wstring?

3 个答案:

答案 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

只需使用wcwc_print输入std::wstringwchar_t*的缩写)。

http://www.firstobject.com/wchar_t-gdb.htm

的详细信息

答案 1 :(得分:1)

假设您有一个std::wstring str。以下内容适用于gdb:

call printf("%ls", str._M_data())

(printf中的-l选项使它成为一个长字符串,我相信你需要“call”语句,因为普通的gdb printf不喜欢那个选项。)

答案 2 :(得分:0)

我做了一些研究,这是gdb PR716PR1998PR2264。显然,这是一个经常被要求的功能,尚未实现。