在Linux系统下使用GDB调试C++程序【命令行调试与vscode编译器调试】

您所在的位置:网站首页 怎么运行debug命令 在Linux系统下使用GDB调试C++程序【命令行调试与vscode编译器调试】

在Linux系统下使用GDB调试C++程序【命令行调试与vscode编译器调试】

2024-07-12 07:14| 来源: 网络整理| 查看: 265

文章目录 1. Linux下编译器,调试器安装2. GDB调试器介绍1. 概述2. 常用调试命令参数 3. Linux下C++命令行调试实战0. 安装超级终端Terminator1. 准备代码2. 进入调试模式3. 调试过程 4. Linux下vscode使用cmake和gdb:

1. Linux下编译器,调试器安装 sudo apt update sudo apt install build-essential gdb //安装三个软件

查看安装是否成功

gcc --version g++ --version gdb --version 2. GDB调试器介绍 1. 概述

GDB(GNU Debugger) 是一个用来调试 C/C++ 程序的功能的调试器,是Linux系统开发C/C++最常用的调试器

程序员可以使用GDB来跟踪程序中的错误,从而减少程序员的工作量

Linux开发C/C++一定要熟悉GDB

VScode是通过调用GDB调试器来实现C/C++调试工作的,而vscode可以在linux和windows环境下运行

Windows中,常用的集成开发环境,如VS,VC等已经内嵌了相应的调试器

GDB的主要功能:

设置断点(断点可以是条件表达式)使程序在指定的代码上暂停执行,便于观察单步执行程序,便于调试查看程序中变量值的变化动态改变程序的执行环境分析崩溃程序产生的core文件 2. 常用调试命令参数

调试开始:执行gdb [exefilename],进入gdb调试程序,其中exfilename为要调试的执行文件名,以下命令后括号内为命令的简化使用,比如 run(r),直接输入命令 r 就代表命令 run

help(h) #查看命令帮助,具体命令查询在gdb 中输入help + 命令 run(r) #重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件) start(s) #单步执行,运行程序,停在第一行执行语句 list(l) #查看源代码(list-n从第n行开始查看代码。list+函数名:查看具体函数) set #设置变量的值 next(n) #单步调试(逐过程,函数直接执行) step(s) #单步调试(逐语句,跳入自定义函数内部执行) backtrace(bt) #查看函数的调用栈帧和层级关系 frame(f) #切换函数的栈帧 info(i) #查看函数内部局部变量的数值 finish #结束当前函数,返回到函数调用点 continue(c) #继续执行 print(p) #打印值及地址 quit(q) #退出gdb break + num(b) #在某行达断点 info + breakpoints #查看当前设置的所有断点 delete + breakpoints num(d) #删除第num个断点 display #跟踪查看具体的变量值 undisplay #取消跟踪观察变量 watch #被设置观察点的变量发生修改时,打印显示 i watch #显示观察点 enable breakpoints #启用断点 disable breakpoints #禁用断点 x #查看内存x/20xw 显示20个单元,16进制,4个字节没单元 run argv[1] argv[2] #调试命令传参 set follow-fork-mode child #Makefile项目管理,选择跟踪父子进程(fork) 编译源代码时需要加上 -g ,产生的可执行文件才能用 gdb 进行调试,例如:gcc -g main.cpp -o main回车键:重复上一条命令 3. Linux下C++命令行调试实战 0. 安装超级终端Terminator sudo apt install terminator

具体使用方法可以查看博文:第七章:超级终端Terminator

1. 准备代码

创建一个C++源代码文件 src/04_debug/sum.cpp,添加以下代码

#include using namespace std; int main(int argc, char const *argv[]) { int N = 100; int sum = 0; int i = 1; while(i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3