当前位置: 首页 > news >正文

linux编程之GDB调试

为什么80%的码农都做不了架构师?>>>   hot3.png

GDB是一套字符界面的程序集,可以用它在linux上调试C和C++程序,它提供了以下的功能:

1 在程序中设置断点,当程序运行到断点处暂停

2 显示变量的值,可以打印或者监视某个变量,将某个变量的值显示出来

3 单步执行

4 运行时修改变量的值

5 跟踪路径

6 线程切换

等等

 

下面以以下程序为例

当我们要使用GDB进行程序的调试时,在用GCC编译时需要加上-g,如下:

GDB之所以能够进行程序的调试也是在于进行编译时的-g选项,当设置了这个选项的时候,GCC会向程序中塞入一下信息,作为GDB调试时的铺垫

,然后GDB才能够利用这些铺垫和信息与程序交互。

有两种方式可以进入GDB,一种就是直接在命令行上输入gdb,然后再在gdb中用file命令加载要调试的程序:

另一种就是,直接在命令行上使用:gdb 程序名

这两种方法都是要在GDB中加载已经做了铺垫的将被调试的程序。

进行GDB并且加载了程序后,我们就可以进行一系列的调试操作了:

1 用 "set args 参数值1  参数值2...."来设置输入参数

2用“list 开始的行号"来打印内容

list 还可以选取区间来打印代码:

3.用 ”b 位置"设置断点

4.用 “run 参数”来运行程序

5.用"display 变量名“来显示变量

6.用”c"来继续运行程序

7.用set命令来改变变量的值

8用q命令来退出GDB

 9 用p命令来打印变量的值

10 设置条件断点

11 用delete删除断点

12 用info break 来显示断点信息

13.用bt来显示函数调用路径

14用whatis或者ptype来显示变量的类型


转载于:https://my.oschina.net/TJWian/blog/635007

相关文章:

  • 数组、指针
  • 架构师速成8.2-架构师要懂产品
  • Javascript设计模式学习之Observer(观察者)模式
  • python用sybase自带的sybpydb模块访问数据库
  • 三种对象传参和ModelDriven的原理
  • netty demo
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • 解决tomcat6部署spring4+mybatisJSP页面产生的500错误,控制台报java.lang.NullPointerException的问题...
  • SQL Server中查看哪些游标未释放
  • 【抄】更改eclipse配置
  • 胜利大逃亡(续)
  • 理解JavaScript中的回调函数
  • hdu 5640 King's Cake(模拟)
  • 2、Python语法基础
  • Python基础教程第二版 6:抽象
  • 【5+】跨webview多页面 触发事件(二)
  • Android组件 - 收藏集 - 掘金
  • Bootstrap JS插件Alert源码分析
  • cookie和session
  • css选择器
  • github从入门到放弃(1)
  • Hibernate【inverse和cascade属性】知识要点
  • Laravel核心解读--Facades
  • leetcode-27. Remove Element
  • Spring Cloud Feign的两种使用姿势
  • SQLServer插入数据
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 对JS继承的一点思考
  • 关于Java中分层中遇到的一些问题
  • 关于List、List?、ListObject的区别
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 前端面试之CSS3新特性
  • 前端知识点整理(待续)
  • 悄悄地说一个bug
  • 小程序 setData 学问多
  • 源码安装memcached和php memcache扩展
  • ionic异常记录
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • Prometheus VS InfluxDB
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​用户画像从0到100的构建思路
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $(selector).each()和$.each()的区别
  • $.each()与$(selector).each()
  • (12)目标检测_SSD基于pytorch搭建代码
  • (分布式缓存)Redis分片集群
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (一)为什么要选择C++
  • (转)VC++中ondraw在什么时候调用的
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .net6使用Sejil可视化日志
  • .Net8 Blazor 尝鲜
  • .net反编译的九款神器
  • .NET开源项目介绍及资源推荐:数据持久层