【问题标题】:C++ Debug in VS Code with Cygwin GDB: How to view values of local variables?使用 Cygwin GDB 在 VS Code 中进行 C++ 调试:如何查看局部变量的值?
【发布时间】:2021-04-07 19:24:03
【问题描述】:

我正在关注Using GCC with MinGW 上的 VS Code 教程,但在调试器方面遇到了一些问题。

我已经安装了 Cygwin gcc-g++(版本:10.2.0-1)并且能够使用他们提供的基本“Hello World”源代码编译和创建一个 .exe。使用 Cygwin gdb(版本:9.2-1)进行调试也可以正常启动和执行。

调试器似乎工作正常:我可以看到局部变量、将变量添加到监视列表、单步执行程序并根据需要设置断点。我的问题是变量列表看起来与参考教程中显示的有很大不同,而且要复杂得多。

它显示了相当多的细节(使用的分配器、类型定义、指针值等),但没有(据我所知)显示调试时可以说是最重要的项目:变量 value em>。

请看下图,了解我的意思。注意这里的变量“msg”和教程中声明的一样:

vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};

我肯定在这里遗漏了一些东西,但不知道是什么。

【问题讨论】:

  • 你不是。 msgstd::vector&lt;string&gt;。一旦你深入了解它,它就不是一个简单的类型。如果您想查看元素,请以_M_start 开头。它可以让您欣赏“它只是有效”这句话。
  • 是的,我明白了,但是为什么我链接的教程显示了一个更简化的视图?向量的每个元素立即呈现[0]:“Hello”[1]:“C++”等。无论我扩展多少不同的属性,我永远无法达到这样的效果。
  • 真的很重要吗?对于它的价值,你的观点就是我使用 WSL 看到的。
  • 是吗?好吧,在这个具体的例子中,不,因为我确切地知道这个向量字符串是用什么填充的。但总的来说,我希望在调试时查看包含在字符串向量中的值。这不应该是可能的吗?我可以通过当前配置(通过打开许多可扩展箭头)获得的最接近的是字符串的第一个值“Hello”。
  • 我的意思是,您说您正在遵循该指南,但您安装的是 Cygwin 而不是他们推荐的 minGW-w64 安装。从技术上讲,你从一开始就偏离了轨道。也许这就是所有需要修复的地方。谁知道。您的launch.json 是否与指南相符? tasks.json 呢?您刚来到这里,说一切正常,但您不喜欢调试器窗口显示变量的方式,即使所有信息都在那里。也许屏幕截图只是被重复使用并且不准确。

标签: visual-studio-code gdb g++ cygwin


【解决方案1】:

正如@sweenish 指出的那样,我的问题是我使用的是 Cygwin 而不是 minGW。安装 minGW 并重新配置所有必需的设置(tasks.json/launch.josn/etc)后,变量会按应有的方式显示。使用 Cygwin 实现的问题可能与“漂亮打印”库有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2021-02-24
    • 2019-05-30
    • 2018-08-11
    相关资源
    最近更新 更多