解决 VSCode 下使用 gdb 调试 C++ 出现的问题

loskyertt Unknown

1.问题复现

如下图所示,这是调试时出现的问题:

step1
step1

step2
step2

从图中可以发现,在进行单步调试时,先进入ostream,但是失败了,因为它找的是错误的路径,这个路径/usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include根本不存在。

2.解决办法

配置~/.gdbinit文件即可。

1
nano ~/.gdbinit

加入下面的内容:

1
2
set directories /usr/include/c++/14.2.1
set substitute-path /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include /usr/include/c++/14.2.1

然后就解决了,效果如下:

step3
step3

3.说明

  1. set directories /usr/include/c++/14.2.1
    这个命令告诉 GDB 在 /usr/include/c++/14.2.1 目录下搜索头文件。这个目录通常是系统上安装的 C++ 标准库头文件的位置。当你请求 GDB 显示源代码或者 GDB 需要查找源代码以进行调试时,它会首先查看这个目录。

  2. set substitute-path /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include /usr/include/c++/14.2.1
    这个命令是一个路径替换指令,它将 GDB 查找源代码时遇到的一个路径映射到另一个路径。具体来说,当 GDB 尝试在 /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include 目录下查找文件时,它会将其重定向到 /usr/include/c++/14.2.1 目录。这通常用于解决源代码和编译后的二进制文件不在同一位置的问题,或者当你想要 GDB 从不同的位置加载源代码时。

  • Title: 解决 VSCode 下使用 gdb 调试 C++ 出现的问题
  • Author: loskyertt
  • Created at : 2024-11-13 20:43:01
  • Updated at : 2024-11-13 13:08:00
  • Link: https://redefine.ohevan.com/2024/11/13/gdb配置/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
解决 VSCode 下使用 gdb 调试 C++ 出现的问题