Visual Studio调试器 - 显示十六进制整数值

173

我正在使用Visual Studio 2008,发现当我在变量上悬停或在立即窗口中查看时,调试器会将整数值显示为十六进制。我猜我可能是不小心按下了某个快捷键。

有人之前遇到过这种情况吗?如何将其设置回以十进制显示?


信不信由你,这也会影响声明整数的增量,比如 f + 1 = 10 (dec) 这样的大失误。 - Laurie Stearn
7个回答

316

4
在“工具对话框”中没有找到它。我改变回去的唯一方式是将变量添加到“监视窗口”,然后右键单击值字段,接着就会出现“十六进制显示”复选框。 - fizzer
12
我能在VS2010的调用堆栈窗口中完成它。 - StuperUser
2
对我来说,它在调试工具栏中。 - Breandán
2
感谢上帝,我终于摆脱了这个愚蠢烦人的东西。谢谢 @Leniel - Ali Umair
3
在2020年仍然与VS 2019相关! - Marc Levesque
显示剩余4条评论

50

您还可以通过在变量名称后添加调试器格式说明符,在Visual Studio监视窗口中针对每个变量选择十六进制或十进制显示。 在监视窗口中输入:

myInt,h
myInt,d

其他非常有用的格式说明符是ac(参见脚注)表示“始终计算”,以及nq表示不使用引号进行显示。它们可以一起使用:

my_string_func(),ac,nq

nqDebuggerDisplay属性中非常有用,该属性可以出现在一个类中:

[DebuggerDisplay("{my_string_func(),nq}")]
class MyClass
{
    /* ...example continues below... */

在一个类中,可以使用 or 同时筛选一个或多个字段:

    [DebuggerDisplay("{some_field,nq}", Name="substitute name here")]
    int an_integer;

    [DebuggerBrowsable(DebuggerBrowsableState.Never)]
    String some_field;
}

http://msdn.microsoft.com/en-us/library/e514eeby(v=VS.100).aspx

  • 请注意,MSDN文档页面的早期版本错误地写成了'Ac'(大写字母'A'),这不起作用。

+1,但是尽管MSDN指出h是十六进制显示的正确修饰符,但在我的版本(VS 2012 Premium)中似乎可以使用x代替(例如1024,x而不是1024,h)。使用h会返回“CXX0026 bad format string”错误。 - vgru
我怀疑这可能取决于正在调试的模块所编写的语言。显然,调试器表达式语法会根据当前语言而改变。从您的消息中可以看出,您正在使用C ++;尽管OP没有指定,但我回答了C#的问题,也许我不应该做出这样的假设。 - Glenn Slayden
1
这提供了更好的格式化离散控制,相对于“十六进制显示”的全有或全无。 - Fernando Gonzalez Sanchez

23
在调试模式下运行 Visual Studio 时会显示一个十六进制按钮,用于启用/禁用十六进制显示。

Visual Studio 调试模式-十六进制按钮


1
这是一个被忽视的按钮,与上下文菜单中的十六进制显示相同,谢谢。 - Fredrick Gauss

14

鼠标右键单击几乎所有调试窗口的客户端区域(除了即时窗口),包括观察、本地、自动、线程和调用堆栈,并且取消勾选“十六进制显示”选项。当调试时,调试工具栏中还有一个“十六进制(Hex)”按钮(默认情况下位于“步过(Step Over)”右侧)。


9
在Visual Studio 2010中,我还在调试工具栏中看到了一个黄色的“Hex”按钮。我只需单击它,即可返回(正常的)十进制值。

7

Visual Studio 2017 只能通过“观察”对话框控制显示十进制或十六进制。

  1. 设置变量后暂停运行。
  2. 右键单击变量,选择“添加观察”或“快速观察”。
  3. 在“观察”对话框中,右键单击该行。
  4. 取消选中“十六进制显示”。

现在显示将为十进制。

enter image description here


vs2022的工作方式相同 - lissajous

3

在立即窗口中,您可以取消勾选十六进制显示选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接