栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

基于VSCode和CMake进行C/C++开发【理论】+【实战】Linux篇 |第四讲:GDB调试器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于VSCode和CMake进行C/C++开发【理论】+【实战】Linux篇 |第四讲:GDB调试器

第四讲:GDB调试器 前言:
  • GDB(GNU Debugger)是一个用来调试C/C++程序的功能强大的调试器;
  • 程序猿可以使用GDB来跟踪程序中的错误,从而减少程序猿的工作量;
  • Linux 开发C/C++一定要熟悉GDB;
  • VSCode是通过调用GDB调试器来实现C/C++的调试工作的;

Windows系统中,常见的集成开发环境(IDE),如VS,VC等,它们内部已经嵌套了相应的调试器

GDB主要功能:

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

调试开始:执行gdb [exefilename],进入gdb调试程序,其中exefilename为要调试的可执行文件名

##一下命令后括号内为命令的简化使用,比如run(r),直接输入命令r就代表命令run

$(gdb)help(h)  # 查看命令帮助,具体命令查询在gdb中输入help + 命令

$(gdb)run(r)  # 重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件)

$(gdb)start  # 单步执行,运行程序,停在第一行执行命令

$(gdb)list(l)  # 查看原代码(list-n,从第n行开始查看代码。list+ 函数名:查看具体函数)

$(gdb)set  # 设置变量的值

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

$(gdb)step(s)  # 单步调试(逐语句:跳入自定义函数内部执行)

$(gdb)backtrace(bt) # 查看函数的调用的栈帧和层级关系

$(gdb)frame(f) # 切换函数的栈帧

$(gdb)info(i) # 查看函数内部局部变量的数值

$(gdb)finish # 结束当前函数,返回到函数调用点

$(gdb)break+num(b) # 在第num行设置断点

$(gdb)info breakpoints #查看当前设置的所有断点

$(gdb)delete breakpoints num(d) #删除第num个断点

$(gdb)display #追踪查看具体变量值

$(gdb)undisplay #取消追踪观察变量

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

$(gdb)i watch #显示观察点

$(gdb)enable breakpoints #启用断点

$(gdb)disable breakpoints #禁用断点
##不常用
$(gdb)x #查看内存x/20xw 显示20个单元,16进制,4字节每单元

$(gdb)run argv[1] argv[2] #调试时命令行传参

$(gdb)set follow-fork-mode child #Makefile项目管理:选择跟踪父子进程(fork())
Tips:

1、编译程序时需要加上:-g,之后才能用gdb进行调试:gcc -g main.c -o main
2、回车键:重复上一命令


4.2 【实战】命令行调试

给出一段简单代码,准备调试

#include 
using namespace std;

int main(int arc,char **argv)
{
	int N = 100;
	int sum = 0;
	int i = 1;
// calculate sum from 1 to 100
	while (i <= N)
	{
		sum = sum + 1;
		i = i + 1;
	}
	cout << "sum = " << sum << endl;
	cout << "The program is over." << endl;

	return 0;
}

control + l 清屏

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/958017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号