基于ARM核的芯片具有低功耗、高性能的特点,广泛应用于嵌入式Linux产品中,系统内核调试是建立系统软件平台的一个关键辅助技术。 接下来是小编为大家收集的GDB基本命令从打开文件到调试结束的教程,希望能帮到大家。

GDB基本命令从打开文件到调试结束的教程

事前准备

1 gcc -g -o 将原文件编译成可以让gdb调试的目标文件

2 gdb 打开要调试的目标文件

3 set args  设置参数

或者run的时候用run 来实现

4 show args 参看参数

5 show environment 查看environment

5 unset env 清除所有环境变量

6 set environment 来设置一个环境变量VAR1

设置/删除断点

1 info sources 或 list  来查看文件,要不然都不知道应该在哪里设置断点

2 查看断点 info breakpoints

3 break

4 tbreak 设置临时断点,到达后被自动删除

5 enable

enable delete

enable once

6 disable

7 delete breakpoints  删除断点

或单用delete而不加任何参数来删除所有断点

->断点进阶

1 break test.c:5 设置断点到指定文件

2 break 在内存某一个位置出暂停

3 break if  来设置条件断点

4 condition  对已存在的断点附上条件

5 command 可以在第n个断点出设置命令

开始调试

0 run 程序开始执行

1 step or s 单步执行

2 next or n非进入式单步执行,就是说,当调用其他函数时,不进入那个函数内部

3 finish 一直运行到函数返回

4 until 运行到函数某一行

5 continue or cont 执行到下一个断点或程序结束

6 return  改变程序流程,直接结束当前函数,并将指定值返回

设置变量

set

1 set i = 5 改变程序中一个变量的值

2 set $i =5 来设置一个pdb环境里自己的变量,该变量独立于程序,也就是说只有gdb认识

获取程序信息

1 监视变量

print /fmt 打印信息

fmt格式,有以下几种

------------------------------

x  十六进制

------------------------------

d  十进制

------------------------------

u 无符号数

------------------------------

o 八进制

------------------------------

t 二进制

------------------------------

a 十六进制打印

------------------------------

c 字符格式

------------------------------

f 浮点数

------------------------------

2 追踪变量

watch   追踪被赋值动作 eg. i = 4;

rwatch   追踪读动作 eg. b = i;

awatch   追踪所有动作

del watchpoint .

info display

display

show display

del display

3  监视内存

x /

Address可以是内存地址或是指针,比如0x8799f000,p,&var

fmt 由三部分组成 NFU,N表示要查看的长度,U为格式,其中有分为bhwg,分别表示以字节,半字,字,双字

来显示。

eg.

(gdb) x argv[0]

0xbfffff61: 0x6d6f682f

(gdb) x /10cb argv[0]

0xbfffff61: 47 '/' 104 'h' 111 'o' 109 'm' 101 'e' 47 '/' 67 'C' 104 'h'

0xbfffff69: 97 'a' 114 'r'

(gdb) x /10tb

12

0xbfffff6b: 01101100 01100101 01110011 00101111

01110111 01101111 01110010 01101011

0xbfffff73: 01110000 01101100

(gdb) x /10th

0xbfffff7f:

0110101101101111 0111010000101111 0110000100000000

01100010000000110001100000000 0110010000000000 0110010100000000 0110011000000000

0xbfffff8f: 0110011100000000 0101011000000000

(gdb)

4 查看总的frame信息

backtrace 或者 bt

说明:frame是函数调用时候所产生的堆栈,存储函数被调用的信息

5 选择要查看的frame

frame

看了“GDB基本命令从打开文件到调试结束的教程”还想看:

linux gdb 导出到文件怎么打开,GDB基本命令从打开文件到调试结束的教程相关推荐

  1. Linux怎么导出inx格式文件,inx文件扩展名,inx文件怎么打开?

    .inx 文件类型1:Compiled Script 文件说明:Contains installation instructions for an InstallShield software ins ...

  2. Linux命令全家桶以及vim/gcc/gdb/makefile/yum

    基本指令 ls指令:对于目录,列出该目录下的所有子目录与文件:对于文件,列出文件名以及其他信息. ls -l //一行只输出一个文件 pwd指令:显示当前用户所在目录 cd指令:改变工作目录,将当前工 ...

  3. linux C/C++ 后端服务问题排查(gdb, pstack,valgrind)

    在linux上运行的c/c++程序,一般是没有界面的,一般都需要打印运行日志,通过日志来定位问题.但是日志不是万能的,有时候日志没有输出我们的想要的信息,如果增加日志还要程序重新编译部署发布,如果是生 ...

  4. 【ArcGIS Pro二次开发】(17):打开GDB、SHP、CAD等各种数据

    一.打开GDB数据库 // 输入一个数据库路径string gdbPath = @"C:\Users\Administrator\Documents\ArcGIS\Projects\Test ...

  5. linux文件明明存在却无法vim打开_教你几招,让你vim编辑器变得友善起来(特别水,不要点进来)...

    什么是 vim? Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. 简单的来说, vi 是老式的字处理器,虽然功能还算齐全,但是现在 ...

  6. linux打开u盘里的文件,Linux下U盘内容为只读文件不能存储其他内容的解决办法

    不知道什么情况最近u盘出现问题了,打开u盘后所有的文件上面都有了个上锁的标志,刚开始没太在意,然后想要继续在u盘中存东西时才发现根本存不进去,百度之后才知道是此时u盘内容都是只读文件,那要怎么解决这个 ...

  7. linux c用open打开(创建)一个文件

    1.文件描述符 Linux操作系统内核(kernel)利用文件描述符来访问文件,文件描述符大于等于0,是一个用户描述被打开文件的索引值,它指向该文件的相关信息记录表,当文件打开或者创建新文件的时,就会 ...

  8. linux打开光盘文件怎么打开方式,ISO是什么文件?用什么打开?

    ISO是什么文件? ISO英文全称Isolation,镜像文件的后缀名,通过特定的压缩方式,将大量的数据文件统一为一个后缀名为ISO的镜像文件,然后在将这些ISO镜像文件刻录到光盘中去,实际上ISO文 ...

  9. Java:使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开

    使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开 问题 方案 问题 在SpringBoot项目中,使用POI导出查询结果至Excel文件中,成功导出后打开Excel文件 ...

  10. 打开excel显示php拓展名,phpexcel 导出excel 因为文件格式或文件扩展名无效,请确定文件未损坏,并且文件扩展名与文件的格式匹配...

    phpexcel导出excel:打开出现这个错误,强制打开是乱码 $objPHPExcel =newPHPExcel(); $filename ="test.xls"; heade ...

最新文章

  1. golang 库 go-restful 中 https basic authentication 基础认证实例
  2. DeepFaceLab史上最快的环境搭建(虚拟环境)
  3. scanperiod 不生效
  4. java char指针数组_sizeof与strlen使用,字符串指针数组
  5. Opencv实现利用滑动条来调整阈值
  6. ENGINE_API CXNoTouch
  7. C++ 命名空间三种用法
  8. 面试字节跳动,我被怼了....
  9. [Simulink]非线性系统模型建立及相轨迹
  10. 在Vue中使用Aliplayer,做视频播放或者视频监控
  11. 在Arcgis地图中插入表格
  12. 可视化数据库监控警报工具 —— Sampler
  13. I Love ces(大小写字母转换 金马五校赛-上海大学)
  14. 12306余票查询(六)——优化页面结构,加入js请求数据部分
  15. 如何生成随机数(模拟掷骰子的过程)-C语言
  16. 大数据市场年均增长30% “个人信用当钱花”安全吗?
  17. 计算机网络【1】 TCP/IP
  18. 墨珩科技荣获“高新技术企业”认定
  19. 中小学数学卷子自动生成程序-----队友项目评价
  20. 移动互联网应用技术架构简介-Restful服务

热门文章

  1. 在Red Hat Enterprise Linux 上如何安装openoffice
  2. MCU芯片缺货涨价 国内厂商机遇和挑战并存
  3. 解决问题:Exception during message handling: Unacceptable CPU info: CPU doesn't have compatibility...
  4. handler机制和异步更新UI页面
  5. vsftpd之启用OpenSSL认证
  6. typeof, offsetof, container_of宏
  7. Spring Security3源码分析-LogoutFilter分析
  8. H3C交换机创建ssh用户登录和设置aux密码
  9. vs2005设置使用符号服务器
  10. (原创)创建windows域---深入理解域概念