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