Linux设备调试-GDB调试器

前言

"工欲善其事,必先利其器",为了方便Linux驱动设备的开发和调试,建立舒适的开发环境、使用必要的软件工具,以及掌握常用的调试技巧是比较重要的。本篇介绍GDB调试器的主要功能和常见用法,同时在第三部分中,命令顺序按照使用频率由高到低编写,方便阅读和使用。

正文

一、GDB4个主要功能

  1. 可按照工程师自定义的要求运行程序。
  2. 让被调试程序在工程师指定的断点处停住,断点可以是条件表达式
  3. 程序被停住时,可检查此刻程序中所发生的事,并追踪上文
  4. 动态地改变程序的执行环境

二、GDB使用实例

若有源文件get_timestamp.c, 使用命令gcc get_timestamp.c -o get_timestamp编译,产生含调试信息的二进制文件get_timestamp,使用命令gdb get_timestamp进入调试状态

三、调试常用命令

Ctrl+A+X 进入/退出调试界面
win cmd +5调整命令窗口大小
fs cmd 操作键停在命令窗口

  1. r运行程序(run)

    set args <参数1> <参数2> ...,可指定运行参数再运行。

  2. b 设置断点(break)

b <function/linenum/*address/if >,可接函数名、行数、内存地址、条件表达式。

  1. c恢复运行(continue)

c ignore_count,可接ignore_count,表示忽略其后多少次断点。

  1. n单步执行(next)

  2. p打印数据(print)

p ,接表达式(变量也是一种表达式)

p /,f为输出格式,有:x:十六进制;d:十进制;o:八进制;t:二进制;c:字符格式;f:浮点数格式

  1. u跳出循环(until)

  2. set修改内存

    set 变量名=0

四、参考来源

书籍《Linux设备驱动开发详解:基于最新的Linux 4.0内核》第21章

相关推荐
Linux系统运维工程师_郭主任44 分钟前
运维人还在被拒offer?现在能考的,只有 RHCE 10.0。
linux
自养Agent1 小时前
MCP Server Boundary Audit Report
linux·服务器·人工智能·windows·大模型·llm
Coisinier2 小时前
docker命令管理镜像及容器
linux·运维·nginx·docker·容器·操作系统
A心有千千结2 小时前
通过 SSH 反向代理让服务器借用本机网络访问 GitHub 的最佳实践
linux·服务器·网络·git·ssh·github
书生执笔画浮沉3 小时前
Linux 内核模块为什么不能自己解决兼容性问题?
linux·c·kernel·update·灵感
15Moonlight3 小时前
Linux网络(03):Socket 编程 TCP
linux·网络·tcp/ip
广州灵眸科技有限公司3 小时前
单芯片同时跑 Linux 与 RT-Thread:RV1126B的AMP异构方案完整拆解
linux·运维·服务器
小雪崩3 小时前
嵌入式学习:Linux驱动开发总结
linux·驱动开发·学习
C++ 老炮儿的技术栈3 小时前
std::atomic 是什么
linux·c语言·网络·c++·visual studio
2401_862880824 小时前
input 子系统框架 、platform 驱动框架
linux·驱动开发·嵌入式硬件