繁体   English   中英

VSCode + CMake + GDB(Windows下):调试符号不完整?

[英]VSCode + CMake + GDB (under Windows): Incomplete debug symbols?

不幸的是,我目前有一个现象,我的调试环境很奇怪。 例如,对于 GDB,我看到局部变量的内容不完整。 最终在堆栈上的所有内容显然都显示出来了。 最终在堆中的所有内容都不再可见。 这个怎么可能?

我正在 Windows 10 上编译。我使用以下环境:

  • VS 代码 1.71.2 + CMake 工具
  • CMake 3.24.2
  • GNU 编译器 GCC 11.2.0(来自我的 Qt6 安装,从 CMake 检测到正确)

我编译了一个非常小的 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 2019

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM