IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux学习之:gdb常用调试命令 -> 正文阅读

[系统运维]Linux学习之:gdb常用调试命令

1. 什么是gdb

??gdb(GNU symbolic debugger)是GNU开源组织发布的一个强大的Linux下的程序调试工具(GNU Project 调试器),它使你可以查看另一个程序在“执行”期间正在执行的操作,或该程序崩溃时正在执行的操作。
??gdb主要可以如下4个方面的事情:
??(1)启动我们的程序,可以按照我们的自定义的要求随心所欲的运行程序。
??(2)使程序在指定条件下停止。
??(3)检查程序停止时发生的情况。
??(4)更改程序中的内容,以便我们可以尝试纠正一个错误的影响,然后继续学习另一个错误。

2. gdb调试命令

??写在前面:gdb调试的是可执行文件,而且这个可执行文件必须带有调试信息才行(gcc编译时必须带有-g参数),而非.c文件(源文件),例如我们有一个名为e_test的可执行文件,启动e_tset调试的方法为:gdb ./e_test 。
在这里插入图片描述

2.1 运行指令(Program running commands)

说??明:以下这些命令用于运行程序。
指??令

  • (gdb) run(简称 r):全速运行程序,直到遇到“断点”或“程序产生错误”时停止。
  • (gdb) continue (简称 c):继续运行程序,直到遇到下一个断点或错误。
  • (gdb) finish :运行程序,直到当前函数(function)执行完成。
  • (gdb) step(简称 s):执行下一行程序(若下一行是个函数,则会进入函数体内)。
  • (gdb) step N (简称 s N) :执行下N行代码。
  • (gdb) stepi (简称 si):执行完一条机器指令,然后停止并返回到调试器。
  • (gdb) next (简称 n) :执行下一行代码,与s类似,但是next不进入函数体。
  • (gdb) nexti (简称 ni) :执行一条机器指令。如果是一个函数调用,则该命令将继续执行,直到函数返回。
  • (gdb) until (简称 u) :在堆栈中上升一层,该命令用于避免单步执行循环多次。
  • (gdb) until N (简称 u N):执行运行程序,直到当前行前面已经运行了N行代码。

2.2 断点指令(Breakpoint commands)

说??明:该命令在指定位置设置软件断点,断点可以是函数名、行号或指令地址。
指??令

  • (gdb) b main:在main函数入口设置断点。
  • (gdb) b:在当前行设置断点。
  • (gdb) b <n>:在第n行设置断点。
  • (gdb) b +<n>:在当前行之后(forward)的第n行设置断点。
  • (gdb) b -<n>:在当前行之前(backward)的第n行设置断点。
  • (gdb) b <function>:在function函数处设置断点。
  • (gdb) b <filename>::在某个文件(filename)的第linenum行设置断点。
  • (gdb) b : :在某个文件(filename)的函数(function)处设置断点。
  • (gdb) b * <address> :在地址(address)处设置断点。

2.3 回溯指令(Backtrace command)

说??明:回溯指令(简称bt)可以打印整个堆栈的信息。在任何时候,均可以通过输入系统中断字符(Ctrl + c)停止回溯。
指??令

  • (gdb) bt:查看栈信息。
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 17:05:14  更:2021-08-23 17:08:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:44:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码