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

秒懂Linux之gdb调试

fe594ea5bf754ddbb223a54d8fb1e7bc.gif

目录

一. 前情提要

二. 相关命令

2.1 l 行号/函数名

2.2 r

2.3 b

2.4 info break

2.5 d

2.6 disable/enable

2.7 n

2.8 s

2.9 p

2.10 display/undisplay

2.11 c

2.12 bt

2.13 finish

2.14 untill

2.15 set var

三. 总结


一. 前情提要

Linux gcc/g++出来的二进制程序,默认是release模式
要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

二. 相关命令

2.1 l 行号/函数名

list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
list/l 函数名:列出某个函数的源代码。
因为在gdb里回车能自动记录最近一条指令,想看完整代码接下来不断回车即可~

2.2 r

r或run:运行程序。

2.3 b

break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点

2.4 info break

info break :查看断点信息。

2.5 d

delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点

2.6 disable/enable

disable breakpoints:禁用断点
enable breakpoints:启用断点

2.7 n

n 或 next:单条执行(把每一行当作一个整体,包括函数)

2.8 s

s或step:进入函数调用

2.9 p

p 变量:打印变量内容或地址

2.10 display/undisplay

display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪

2.11 c

continue(或c):从一个断点运行到另一个断点

2.12 bt

breaktrace(或bt):查看各级函数调用及参数

2.13 finish

finish:执行到当前函数返回,然后挺下来等待命令 

2.14 untill

until X行号:跳至X行(可用来跳出循环等等)

2.15 set var

set var:修改变量的值
这个比较少用,一般用来该变判断的反面来测试程序是否能运行下去,就不用跑到源代码改完再回来测了。

三. 总结

其实这些指令并不是重点,重点是我们需要学会有调试的思维,通过这些指令来帮我们找出问题,划定范围,然后不断缩小范围,最后找到问题。这个过程才是最重要的~

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux 进程优先级、程序地址空间、进程控制
  • 数据恢复的定制之旅:打造SQL Server的专属恢复方案
  • 如何将PyCharm 中使用 PDM 管理的 Django 项目迁移到 VS Code 并确保一切正常工作?
  • 非传统题练习(自用)
  • 界面控件DevExpress WinForms,支持HTML CSS提升用户体验(一)
  • 做 DL-FWI 研究需要哪些知识和能力
  • 超详细的 Linux Conda 环境安装教程
  • 算法通关:015:最小栈
  • 基于el-table的表格点选和框选功能
  • 测试面试宝典(四十六)— 在项目中如何保证软件质量?
  • 数组的复制
  • C#初级——List 容器
  • C/C++开发,opencv光流法跟踪特征点
  • 17085 工作分配问题(优先做)
  • C# 设计模式之抽象工厂模式
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【Linux系统编程】快速查找errno错误码信息
  • express + mock 让前后台并行开发
  • Java知识点总结(JavaIO-打印流)
  • laravel5.5 视图共享数据
  • Linux各目录及每个目录的详细介绍
  • Magento 1.x 中文订单打印乱码
  • React中的“虫洞”——Context
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Vue.js源码(2):初探List Rendering
  • 程序员最讨厌的9句话,你可有补充?
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 仿天猫超市收藏抛物线动画工具库
  • 高程读书笔记 第六章 面向对象程序设计
  • 通过几道题目学习二叉搜索树
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 详解NodeJs流之一
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • zabbix3.2监控linux磁盘IO
  • 阿里云移动端播放器高级功能介绍
  • 交换综合实验一
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #NOIP 2014# day.2 T2 寻找道路
  • $jQuery 重写Alert样式方法
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (pycharm)安装python库函数Matplotlib步骤
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (三)c52学习之旅-点亮LED灯
  • (一) springboot详细介绍
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET Framework杂记
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .Net环境下的缓存技术介绍
  • .NET技术成长路线架构图
  • .NET框架设计—常被忽视的C#设计技巧