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

09Linux GDB学习笔记

Linux GDB使用

目录

文章目录

  • Linux GDB使用
    • 先编译文件
    • 1.检查安装
      • 1.1 安装GDB
    • 2.启动GDB
    • 3.退出GDB
    • 4.设置断点
      • 4.1 在指定行号处设置断点
      • 4.2 在指定函数名处设置断点
      • 4.3 在指定源文件和行号处设置断点
    • 4.4查看断点信息
    • 4.5删除断点
    • 5.运行
      • 5.1 <font color=#ff0000>逐过程:遇到函数调用时不会进入函数内部。
      • 5.2 <font color=#ff0000>逐语句:遇到函数调用时会进入函数内
    • 6.查看和修改变量
    • 7.查看函数调用栈
    • 7.查看源码和行号
    • 8.打印变量的的值
    • 多线程调试(待)
    • 设置线程锁(待)
    • 9.总命令表

先编译文件

-g:包含调试信息
-o:控制优化级别

请添加图片描述

1.检查安装

gdb --version
请添加图片描述

1.1 安装GDB

sudo apt-get install gdb

2.启动GDB

直接调试目标程序:gdb ./hello_server
附加到进程ID:gdb attach pid
调试core文件:gdb filename corename

3.退出GDB

命令:q 然后回车 或者 Ctrl + d 

4.设置断点

4.1 在指定行号处设置断点

b + 行号

4.2 在指定函数名处设置断点

b 源文件:函数名

4.3 在指定源文件和行号处设置断点

b 源文件:行号

4.4查看断点信息

info b

4.5删除断点

清除某个断点 (gdb) delete 4
清除所有断点 (gdb) delete 

请添加图片描述

请添加图片描述

5.运行

有断点运行到断点
r

5.1 逐过程:遇到函数调用时不会进入函数内部。

n

5.2 逐语句:遇到函数调用时会进入函数内

s

6.查看和修改变量

打印变量值:p 变量名
修改变量值:set var 变量名 = 新值
追踪变量:display 变量名,会在每次程序停止时显示变量值。
取消追踪:undisplay 变量名编号

7.查看函数调用栈

bt
鄙人样例
请添加图片描述设置断点
请添加图片描述
#0 表示最内层的函数调用
#1
#2
#3 表示 Init_ShellState的调用,它在 main.c调用。
#4 表示 main 函数的调用,它是程序的入口点
请添加图片描述

7.查看源码和行号

l

8.打印变量的的值

p 变量名

请添加图片描述

多线程调试(待)

查看线程信息:info thread
切换线程:thread 线程编号
对指定线程执行命令:thread apply 线程编号 command

设置线程锁(待)

锁定线程:set scheduler-locking on
解锁线程:set scheduler-locking off
单步执行时锁定线程:set scheduler-locking step

9.总命令表

ctrl + d 或 quit 调试命令	gdb binFile 退出
list( l )  行号	显示binFile源代码,接着上次的位置往下列,每次列10行。
list( l ) 函数名	列出某个函数的源代码。
run( r )	运行程序。
next( n )	单条执行。
step( s )	进入函数体调用
break(b) 行号	在某一行设置断点
break(b) 函数名	在某个函数开头设置断点
info break( b )	查看断点信息。
finish	执行到当前函数返回,然后停下来等待命令
print( p ) 	打印表达式的值,通过表达式可以修改变量的值或者调用函数
p 变量	打印变量值(显示一次)。
set var	修改变量的值
continue( c )	从当前位置开始连续而非单步执行程序
delete breakpoints	删除所有断点
delete breakpoints n	删除序号为n的断点
disable breakpoints	禁用断点
enable breakpoints	启用断点
info(或i) breakpoints	参看当前设置了哪些断点
display 变量名	跟踪查看一个变量,每次停下来都显示它的值
undisplay 序号	取消对先前序号设置的那些变量的跟踪
until X行号	运行至X行
breaktrace(或bt)	查看各级函数调用及参数
info( i )  locals	查看当前栈帧局部变量的值
quit	退出gdb

优秀文献推荐:
[Linux | 调试器GDB的详细教程【纯命令行调试】]https://blog.csdn.net/Fire_Cloud_1/article/details/129213449
请添加图片描述听歌曲看图,意想不到
希望今日工作/学习的你也能get到我的快乐…
请添加图片描述

参考文献:感谢!!
https://blog.csdn.net/lovely_dzh/article/details/109160337

http://www.lryc.cn/news/360141.html

相关文章:

  • 海外金融牌照
  • addEventListener()方法中的几个参数,以及作用
  • FreeRtos进阶——通用链表的实现方式
  • 【kubernetes】关于k8s集群如何将pod调度到指定node节点(亲和与反亲和等)
  • AOP基础
  • EXSI虚拟机新增磁盘并将空间扩充到已有分区
  • 民国漫画杂志《时代漫画》第39期.PDF
  • 每天一个数据分析题(三百四十二)
  • c++会员消费积分系统
  • 如何获知表中数据被删除
  • 机器学习之sklearn基础教程
  • ES升级--04--SpringBoot整合Elasticsearch
  • eclipse如何debug
  • 无人售货机零售业务成功指南:从市场分析到创新策略
  • 开源代码分享(32)-基于改进多目标灰狼算法的冷热电联供型微电网运行优化
  • 7、架构-架构的安全性
  • LeetCode题练习与总结:路径总和Ⅱ--113
  • Java复数计算
  • MySQL-事务日志
  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用类坐标点QPoint)
  • 算法练习——字符串
  • Flutter 中的 SliverOverlapInjector 小部件:全面指南
  • 7个Python爬虫入门小案例
  • linux 利用 ~$() 构造数字
  • 七大获取免费https的方式
  • JVM(Java虚拟机)笔记
  • 秒杀基本功能开发(显示商品列表和商品详情)
  • centos 记录用户登陆ip和执行命令
  • JZ2440笔记:DM9000C网卡驱动
  • 【数据结构】二叉树:简约和复杂的交织之美