嵌入式Linux系统编程学习之七gdb调试器
文章目录
- 前言
- 一、gdb的常用命令
前言
一、gdb的常用命令
Linux包含了一个叫gdb的调试程序。gdb可以用来调试C和C++程序。在程序编译时用 -g 选项可打开调试选项。
常见调试步骤如下:
gcc -o filename.o -Wall filename.c -g //进入调试用gcc -o fn.o fn.c -g
gdbfilename.o //进入调试
l //显示代码(list)
b 4 //在第4行设置断点
r //运行
n //下一步不进入函数
s //单步进入函数
pI //打印变量I
c //运行到最后
q //退出
gdb的常用命令:
命令格式 | 含义 |
---|---|
set args 运行时的参数 | 指定运行时的参数,如set args 2 |
show args | 查看设置好的运行参数 |
path dir | 设定程序的运行路径 |
show paths | 查看程序的运行路径 |
set environment var [=vahue] | 设置环境变量 |
show environment [var] | 查看环境变量 |
cd dir | 进入到dir目录,相当于shell中的cd命令 |
p | wd | 显示当前工作目录 |
shell command | 运行shell的command命令 |
info b | 查看所设断点 |
break [文件名:] 行号或函数名<条件表达式> | 设置断点 |
tbreak [文件名:] 行号或函数名<条件表达式> | 设置临时断点,到达后被自动删除 |
delete [断点号] | 删除指定断点,其断点号为"info b"中的第一栏。若默认断点号则删除所有断点 |
disable [断点号] | 停止指定断点,使用"info b"仍能查看此断点。若默认断点号则停止所有断点 |
enable [断点号] | 激活指定断点,即激活被disable停止的断点 |
condition [断点号] <条件表达式> | 修改对应断点的条件 |
ignore [断点号] <num> | 在程序执行中,忽略对应断点num次 |
Step | 单步恢复程序运行,且进入函数调用 |
Next | 单步恢复程序运行,但不进入函数调用 |
Finish | 运行程序,直到当前函数完成返回 |
c | 继续执行函数,直到函数结束或遇到新的断点 |
list <行号> | <函数名> | 查看指定位置代码 |
file [文件名] | 加载指定文件 |
forward -search 正则表达式 | 源代码前向搜索 |
reverse -search 正则表达式 | 源代码后向搜索 |
dir dir | 停止路径名 |
show directories | 显示定义了的源文件搜索路径 |
info line | 显示加载到gdb内存中的代码 |
print 表达式 | 变量 | 查看程序运行时对应表达式和变量的值 |
x <n/f/u> | 查看内存变量内容。n为整数,表示显示内存的长度;f表示显示的格式;u表示从当前地址往后请求显示的字节数 |
display 表达式 | 设定在单步运行或其他情况中,自动显示的对应表达式的内容 |
backtrace | 查看当前栈的情况,即可以查到调用哪些函数尚未返回 |
按Tab键补齐命令,用光标键上下翻动历史命令,用help up看帮助。
嵌入式Linux系统编程学习之七gdb调试器相关推荐
- 【Linux系统编程学习】 GDB调试器的简单使用
此为牛客网Linux C++课程 1.13&1.14&1.15&1.16 的课程笔记. 0. GDB简介 1. 准备工作 想要使用gdb调试,首先需要用gcc的-g参数生成可执 ...
- 嵌入式Linux系统编程学习之二常用命令
嵌入式Linux系统编程学习之二常用命令 文章目录 嵌入式Linux系统编程学习之二常用命令 前言 一.常用命令 1.su(用户切换) 2.useradd(添加用户) 3.passwd(修改密码) 4 ...
- 嵌入式Linux系统编程学习之一目录结构
嵌入式Linux系统编程学习之一目录结构 文章目录 嵌入式Linux系统编程学习之一目录结构 前言 一.Linux目录结构 前言 Linux目录结构 一.Linux目录结构 /bin:存放Linux的 ...
- 嵌入式Linux系统编程学习之九基于文件描述符的文件操作
文章目录 前言 一.文件描述符 二.打开.创建和关闭文件 三.读写文件 四.改变文件大小 五.文件定位 六.原子操作 七.进一步理解文件描述符 八.文件描述符的复制 九.文件的锁定 十.获取文件信息 ...
- 嵌入式Linux系统编程学习之三vi编辑器
文章目录 前言 一.插入文本 二.删除与修改 三.光标的移动 四.查找与替换 五.块操作 六.结束编辑 前言 在Linux下编程,使用编辑器vi(vim).gedit或Emacs,编译链接器gcc,调 ...
- 嵌入式Linux系统编程学习之五gcc/g++编译器
文章目录 前言 一.gcc/g++编译过程 二.静态库和动态库 三.gcc警告和优化选项 1.gcc警告 2.gcc优化选项 前言 对于.c格式的C文件,可以采用gcc或g++编译,对于.cc.. ...
- 嵌入式Linux系统编程学习之八基于文件指针的文件操作
文章目录 前言 一.文件的创建.打开与关闭 二.读写文件 三.文件定位 四.标准输入/输出流 五.目录操作 前言 对文件进行操作有打开文件.关闭文件.读写文件. 文件指针:每打开一个文件,就返 ...
- 嵌入式Linux系统编程学习之三十三网络相关概念
文章目录 一.网络相关名词的概念 1.套接口 2.端口号 3.IP 地址 二.Socket 概念 三.Socket 类型 四.Socket 的信息数据结构 五.数据存储优先顺序的转换 六.地址转格式转 ...
- 嵌入式Linux系统编程学习之十二守护进程
文章目录 前言 一.守护进程的特性 二.daemon 进程的编程规则 1.创建子进程,父进程退出 2.在子进程中创建新会话 前言 daemon 运行在后台,也称作"后台服务进程" ...
最新文章
- python小屋_Python小屋——Python语言基础(三)
- iis同时运行asp和php,服务器IIS同时支持ASP和PHP
- 7-10 石子合并 (10 分)
- jzoj6275-[NOIP提高组模拟1]小L的数列【矩阵乘法,欧拉定理】
- @hot热加载修饰器导致static静态属性丢失(已解决)
- 全球顶尖科学杂志:阿里AI语音技术超越谷歌,可读懂人类潜藏意图
- 【C语言】矩阵乘法(二维数组)
- 全球研发投入榜:中国第二逼近美国,以色列最下血本 | 联合国数据
- koa2后端和php后端,vue+koa2+mongo前后端分离restful,配置和部署到云
- php 运行thinkphp,thinkPHP cli命令行运行PHP代码
- ExtJs 4.x MVC 架构
- 中科大图形学暑期课程资料
- SQLite 之 C#版 System.Data.SQLite 使用
- 优秀课程案例:使用Scratch制作水果忍者游戏!
- 桔梗载药上浮 柴胡升于左 升麻生于右
- 第七章:Java基础数据类型-整数类型
- 【Python】【pygame】更逼真的星星、连绵细雨
- 乐学Python作业题
- 美团:踩雷好几年,才总结出的数据治理避坑攻略
- Linux中常用命令
热门文章
- 聚类效果评价——Silhouette Coefficient(轮廓系数)——内部评估标准(1)
- vant 上传附件后回显_Vue + VantUI Uploader 上传组件, 实现上传功能, 但 手机实时上传照片只回显, 上传不上去 。...
- uniapp 子组件 props拿不到数据_谈一谈使用 webpack 开发时,Vue 组件之间的数据传递...
- bz2解压命令_Java压缩技术 - tar.bz2解压缩
- c++去除图片上的文字_图片文字修改去除方法
- kubernetes 磁盘、PV、PVC
- python学习day07-encode和decode
- [教程]Tensorflow + win10 + CPU + Python3.6+ 安装教程
- Codeforces.700E.Cool Slogans(后缀自动机 线段树合并 DP)
- git使用笔记(一)入门