首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在带有gdb的vscode中,natvis提供了“可视化表达式所需的显式刷新”。

在带有gdb的vscode中,natvis提供了“可视化表达式所需的显式刷新”。
EN

Stack Overflow用户
提问于 2022-07-15 21:39:52
回答 1查看 211关注 0票数 1

如果给定一个natvis文件,vscode就可以很好地打印自定义对象。我正在运行linux并使用gdb进行调试。

文档说:

对于gdb/lldb调试("type":"cppdbg"),Natvis框架的一个子集已经移植到/C++扩展中,代码驻留在MIEngine共享组件中。如果需要其他未实现的功能,请在MIEngine GitHub页面上提交一个问题,详细说明缺少的内容。

我基于natvis页面这里创建了一个简单的natvis文件

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <Type Name="MyArray">
    <DisplayString>{{size={size}}}</DisplayString>
    <Expand>
        <Item Name="[size]">size</Item>
        <ArrayItems>
            <Size>size</Size>
            <ValuePointer>ptr</ValuePointer>
        </ArrayItems>
    </Expand>
  </Type>
</AutoVisualizer>

我在我的launch.json中包含了对这个文件的引用

代码语言:javascript
复制
"visualizerFile": "${workspaceFolder}/file.natvis",

在启动调试器并悬停在一个变量上之后,我看到“可视化表达式需要显式刷新”。这是很有希望的,因为它显示vscode已经找到了该文件,但是由于某些原因,它仍然无法应用它。在任何vscode OUTPUT/DEBUG CONSOLE选项卡中都没有natvis日志/错误。

我遗漏了什么吗?如何让vscode+gdb使用我的.natvis文件?

EN

回答 1

Stack Overflow用户

发布于 2022-07-15 21:39:52

我的解决方案来自于这里

您能确保您的launch.json中有属性“launch.json”:true set吗?

除了visualizerFile之外,添加以下行突然使.natvis定义工作起来。

代码语言:javascript
复制
"visualizerFile": "${workspaceFolder}/file.natvis",
"showDisplayString": true, // <-- add this

FYI,我还注意到vscode将--interpreter=mi传递给gdb,因此对于与文档引用的MIEngine进行交互,有一些显式的gdb支持。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72999833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档