【问题标题】:visual studio 2012 does not display wchar_t as textVisual Studio 2012 不将 wchar_t 显示为文本
【发布时间】:2013-11-16 01:37:22
【问题描述】:

我刚刚从 Visual Studio 2010 切换到 Visual Studio 2012,我在使用 Visual Studio 2012 调试器时遇到了问题 - 似乎在调试 c 代码时 wchar_t 不再显示为文本。

简单来说,考虑以下小而简单的程序:

#include <wchar.h>
int main()
{
  wchar_t *ppp = L"abcdef";
  char    *zzz = "abcedf";

  return 0;

}

在vs2012中,调试这个程序时,ppp watch显示“a”{97},并且没有放大镜让我选择可视化。
这在vs2010上运行良好,手表显示整个文本并显示放大镜。

将鼠标悬停在变量上并在即时窗口中显示其值时也会发生这种情况。正确显示字符,正确设置 /Zc:wchar_t 标志,实际上我在 vs 2012 中编译了程序并在其中进行了调试vs2012 和 vs2010 得到了相同的结果,所以看起来不像是编译问题。

有人遇到过这样的问题吗?是否有任何修复或解决方法(除了通过询问 ppp,su 的值来强制它)?

【问题讨论】:

    标签: c visual-studio visual-studio-2012 visual-studio-debugging


    【解决方案1】:
    1. main() 中的代码中放置一个断点
    2. 启动程序并等待调试断点被命中
    3. 用鼠标右键单击ppp
    4. 在弹出窗口中选择添加手表
    5. 打开手表控制台
    6. 查找ppp
    7. 右击ppp
    8. 在弹出的窗口中选择编辑值
    9. 通过附加“,su”将“ppp”更改为“ppp,su”

    您现在应该可以看到 ppp 的内容为 Unicode 文本。

    改变默认输出的调试操作符有:

    • su : Unicode 文本 (UTF-16)
    • s8 : UTF-8
    • o : 八进制
    • d : 小数
    • x : 十六进制
    • wc:Windows 类
    • wm : Windows 消息
    • 小时:HRESULT
    • ! : 关闭 STL 可视化
    • c : ASCII 字符

    ,可能还有更多。

    【讨论】:

    • + s 用于普通字符串
    • 如果我不仅要查看单个 unicode,还要查看字符串,例如 p, 100,但是,如果添加 p,100, su,则会引发错误。如何应对?
    • 我发现我们可以使用 p,100su 将 p 和下一个 99 变量显示为 unicode 字符串。当 p 是一个结构指针并且其中有 unicode 成员时,它非常有用。
    【解决方案2】:

    在 .c 文件中添加 ,su 对我不起作用。以(wchar_t*) 做前缀!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多