我刚刚从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 上运行良好, watch 显示整个文本并显示放大镜。

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

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

最佳答案

  • main()
  • 中的代码中放置一个断点
  • 启动你的程序并等待调试断点被命中
  • 用鼠标右键单击 ppp
  • 在弹出的窗口中选择Add watch
  • 打开 Watch 控制台
  • 查找 ppp
  • 右击ppp
  • 在弹出的窗口中选择编辑值
  • 通过附加“,su”将“ppp”更改为“ppp,su”

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

    更改默认输出的调试操作符是:
  • su : Unicode 文本 (UTF-16)
  • s8 : UTF-8
  • o : 八进制
  • d : 小数
  • x : 十六进制
  • wc : Windows 类
  • wm : Windows 消息
  • hr : HRESULT
  • ! : 关闭 STL 可视化
  • c : ASCII 字符

  • ,而且可能更多。

    关于c - Visual Studio 2012 不将 wchar_t 显示为文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19784595/

    10-09 08:47