【问题标题】:How to print wstring in gdb如何在 gdb 中打印 wstring
【发布时间】:2010-09-11 11:07:08
【问题描述】:

如何在 gdb 中打印 wstring?

【问题讨论】:

    标签: gdb wstring


    【解决方案1】:

    假设您有一个std::wstring str。以下应该在 gdb 中工作:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        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
        结束

        只需输入 wcwc_print 的缩写)和 std::wstringwchar_t*

        更多详情http://www.firstobject.com/wchar_t-gdb.htm

        【讨论】:

          猜你喜欢
          • 2020-10-14
          • 2011-10-11
          • 2015-01-08
          • 2011-07-24
          • 1970-01-01
          • 2011-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多