Linux下C++开发笔记--终端GDB调试器的使用

目录

1--前言

2--常用调试命令参数

3--实例展示


1--前言

        学习笔记参考教程:基于VSCode和CMake实现C/C++开发 | Linux篇

2--常用调试命令参数

①进入gdb调试程序

gdb exefilename # exefilename为可执行文件

注:exefilename必须为g++带-g参数生成的可执行文件;

②常用命令参数(括号为指令简写)

help gdb # 查看帮助指令,简写(h)

run # 重新开始运行文件,简写(r)

start # 单步执行程序,停在第一行可执行程序

list n # 以第n行为中心查看上下(5行)的代码,在断点处执行将查看断点前后5行的代码,简写(l)

set # 设置变量值

next # 单步调试(逐过程,函数直接执行),简写(n)

step # 单步调试(逐语句,跳入自定义函数内部执行),简写(s)

backtrace # 查看函数调用的栈帧和层级关系,简写(bt)

frame # 切换函数的栈帧,简写(f)

info # 查看函数内部局部变量的数值,简写(i)

finish # 结束当前函数,返回到函数调用点

continue # 继续运行,直到下一个断点

print # 打印值和地址,简写(p)

quit # 退出gdb,简写(q)

break num # 在第num行设置断点,简写(b)

info breakpoints # 查看当前设置的所有断点,简写(i b)

delete breakpoints num # 删除第num个断点,简写(d)

display # 追踪查看具体变量值

undisplay # 取消跟踪观察变量

watch # 被设置观察点的变量发生修改时,打印显示

i watch # 显示观察点

enable breakpoints # 启动断点

disable breakpoints # 禁用断点

x # 查看内存

run argv[1] argv[2] # 调试时命令行传参

set follow-fork-mode child # makefile项目管理,选择跟踪父子进程

3--实例展示

①main.cpp代码:

#include 

using namespace std;

int main(int argc, char **argv){
    int N = 100;
    int sum = 0;
    int i = 1;

    // calculate sum from 1 to 100
    while (i <= N){
        sum = sum + i;
        i = i + 1;
    }
    
    // print the result
    cout << "sum = " << sum << endl;
    cout << "The program is over." << endl;

    return 0;
} 

②使用g++编译:

g++ -g main.cpp -o test_with_gdb

③使用gdb调试:

gdb test_with_gdb

Linux下C++开发笔记--终端GDB调试器的使用_第1张图片

④简单指令测试:

Linux下C++开发笔记--终端GDB调试器的使用_第2张图片

Linux下C++开发笔记--终端GDB调试器的使用_第3张图片

 

你可能感兴趣的:(c++,开发语言)