VSCode在调试模式下显示变量的十六进制值

42

VSCode可以在调试模式下显示本地变量的十六进制值吗?我一直在寻找方法使其实现,但没有成功。

9个回答

72

我知道这是一个旧的线程,但它在我的 Google 搜索结果中排名靠前,所以我想添加一些新信息,这些信息我在 Burt_Harris 链接的问题线程中找到。

您似乎无法更改本地窗格或工具提示中显示的值的格式,但您可以通过在变量名称后附加 ,x 强制在“监视”窗格中为变量指定格式。

其他格式也存在,例如二进制的 ,b,八进制的 ,o。我认为这基于 GDB 显示修改器的使用(例如 display/x myVariable)。

在 VSCode 的“监视”窗格中使用的后缀:

在VSCode的监视窗格中使用的后缀


它就像魔法一样奏效,非常感谢你。 - Ahmad Asmndr
这仅适用于使用GDB,而不适用于Clang。 - Johan
4
不支持结构体。 - ramdav

17

这个问题已经有一段时间没有活动了,但我通过查看Cortex-Debug Github(Issues)的此线程链接发现了一个解决方案。在(GDB)调试控制台中使用-exec set output-radix 16可以将数字显示为十六进制,将其设置为10则显示为十进制。


1
谢谢!我只想提醒初学者,在设置命令之前需要输入-exec: -exec set output-radix 16 - Edson Manoel

11

我也在寻找同样的方法,最终来到这里,看到该功能请求目前已被拒绝。

但后来我意识到:在监视窗口中,你可以添加一个表达式,而数字有一个toString的方法,可以选择将数字转换为什么进制数(2-36)。它是有效的:

带.toString的监视窗口

不仅仅只监视value,对于十六进制,请监视value.toString(16)

我曾尝试在我的代码中向数字原型添加更多方法(我想要一个分组显示),但不幸的是,它只显示为“[Object object]”。

我知道这不完全是你想要的,但是这是一种无需任何插件即可使用的方法。


也适用于PWSH/DotNET:$xyz.ToString('x') - timelmer

7
这个答案适用于 GDB 调试。
对于一个正在进行的调试会话,在调试控制台中键入以下内容:
-exec set output-radix 16

要每次调试器运行时都应用此设置,请将文本 "set output-radix 16" 添加到 launch.json 文件的 "setupCommands" 部分中。
"setupCommands": [
    {
        "description": "Enable pretty-printing for gdb",
        "text": "-enable-pretty-printing",
        "ignoreFailures": true
    },
    { "text": "set output-radix 16" }
]

这帮助我按需设置我的调试器! - Daimonion

3

Golang

正如@some所说的那样,您可以在监视器中添加一个表达式。以下是您需要添加的表达式,以将字节片显示为十六进制字符串:

call hex.EncodeToString(mySliceOfBytes)

3
您目前无法实现,但是有关于此功能的请求仍在处理中。根据VSCode核心开发人员的说法,需要在您正在调试的环境中实施特定的调试器扩展。以下是已知相关调试器扩展功能请求的链接列表:

通过给功能请求添加赞成票来投票您的偏好


显然,这个功能不是主要的VS Code开发人员可以添加的。这些值是由使用的任何调试扩展提供的,因此问题应该与他们提出。 - Adam

2
如果使用CodeLLDB调试器,则可以在VSCode设置中更改变量的显示设置Lldb:Display Format。可以通过在VSCode设置中的搜索栏中键入lldb.displayFormat来找到它。
请注意,这会更改所有变量的显示设置。

显示LLDB显示格式设置的图片


1

使用GDB,您可以将其转换为void*:(void*)var,它会将其视为指针,并以十六进制显示。


1

实际上,您可以打开调试控制台并使用hex()函数转换值。


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