4

我刚从 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 的值来强制它)?

4

2 回答 2

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

您现在应该看到pppUnicode 文本的内容。

更改默认输出的调试运算符是:

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

,而且可能更多。

于 2014-07-18T11:15:12.640 回答
1

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

于 2015-08-11T21:22:29.460 回答