[英]VSCode + CMake + GDB (under Windows): Incomplete debug symbols?
不幸的是,我目前有一个现象,我的调试环境很奇怪。 例如,对于 GDB,我看到局部变量的内容不完整。 最终在堆栈上的所有内容显然都显示出来了。 最终在堆中的所有内容都不再可见。 这个怎么可能?
我正在 Windows 10 上编译。我使用以下环境:
我编译了一个非常小的 C++ 测试程序:
VS Code 下 1x 和 Visual Studio 2019 下 1x
class classA
{
public:
classA(int a, int b) : myA(a), myB(b)
{
}
private:
int myA, myB;
};
int main()
{
uint8_t testA = 0;
uint16_t testB = 88;
std::vector<std::unique_ptr<classA>> listOfClassA;
listOfClassA.push_back(std::make_unique<classA>(3, 7));
listOfClassA.push_back(std::make_unique<classA>(10, 11));
listOfClassA.push_back(std::make_unique<classA>(12, 13));
}
如果我对此进行调试并设置相应的断点(在 main() 的最后一行),则调试符号在 Visual Studio 2019 下是完整的,并且局部变量的显示看起来要好得多。 我无法正常使用 VS Code 下的显示。
以下是相应的比较截图:
VS Code 没有关于局部变量 listOfClassA 的信息
我的 CMake 配置(CMakeLists.txt)的内容如下所示:
cmake_minimum_required(VERSION 3.0.0)
project(STL_example VERSION 0.1.0)
add_executable(STL_example main.cpp)
我已经玩过无数编译器标志,例如-ggdb -g3,不幸的是没有成功。 我在 CMakeLists.txt 中指定了如下信息:
add_compile_options(
"$<$<CONFIG:DEBUG>:-O0;-g3>" # no optimization, maximal debug informations for gdb
"$<$<CONFIG:RELEASE>:-O2>" # optimization level 2 --> O1 plus instruction scheduling --> best for release versions
)
那里出了点问题……
我不知道如何解决这个问题了。 如果其他人有提示那就太好了,这样我就可以在 VS Code 下的 Debug window 中获得我的变量的合理视图。
太感谢了。
注解:
我只需单击 CMake 工具状态栏底部的小错误即可开始在 VS Code 下进行调试。 Debug 当然被选为当前的构建变体。
这里我还可以在终端中看到,然后使用来自 QT6 安装的 GDB。
--dbgExe=C:/Qt/Tools/mingw1120_64/bin/gdb.exe'
那应该都是正确的...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.