码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Linux调试器-gdb使用


    目录

    一、gdb的使用

    二、查看可执行程序的信息(readelf)

    三、gdb常用的指令

    1. 显示源代码(list/l)

    2. 运行程序(r或run)

    3. 在某一行设置断点(b指令)

    4. 显示断点(info b)

    5. 删除断点

    6. 调试(r)

    7. 禁止和启用断点(disable和enable)

    8. 单条执行(逐过程执行)(n 或 next)

    9. 进入函数调用(s或step)

    10. 打印变量值(p)

    11. 长期监视/取消监视变量的值(display指令/undisplay指令)

    12. 跳至指定行

    13. 运行到当前函数的结尾(finish)

    14. 从一个断点直接运行到下一个断点处(c)

    15. 显示调用堆栈(bt)

    16. 修改变量的值:set var

    17. 显示当前函数内临时变量:info locals 


    一、gdb的使用

    • 在 Linux 中使用默认的编译器进行代码编译时,会采用 release 模式
    • 要生成带有调试信息的可执行文件,您需要在编译命令中添加-g选项,这样生成的程序就是 debug 版本
    • debug版本发布的可执行程序的大小比release版本发布的可执行程序的大小要大一点,因为以debug版本发布的可执行程序内部包含了更多的调试信息 

     

    二、查看可执行程序的信息(readelf)

    • readelf 是一个在 Linux 系统中可以用来查看 ELF(可执行与可链接格式)文件信息 
    1. readelf -S mybin_g //命令用于查看 ELF 文件 mybin_g 的节头表信息
    2. //包括名称、类型、大小、地址、偏移等

     

     

    1. readelf -S mybin_g | grep -i debug//使用 readelf -S mybin_g 列出了所有节的信息
    2. //通过管道 | 将输出传递给 grep -i debug 命令,其中 grep 是用于在文本中搜索指定模式的命令
    3. //而 -i 选项表示忽略大小写

     

    三、gdb常用的指令

     

     

     

    1. 显示源代码(list/l)

     

     

    2. 运行程序(r或run)

     

    3. 在某一行设置断点(b指令)

    b 18//在第18行设置断点

    4. 显示断点(info b)

    5. 删除断点

    • delete breakpoints:删除所有断点
    • delete breakpoints n:删除序号为n的断点
    • 可以简写成d

     

    6. 调试(r)

    7. 禁止和启用断点(disable和enable)

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

     

    8. 单条执行(逐过程执行)(n 或 next)

    9. 进入函数调用(s或step)

    10. 打印变量值(p)

    11. 长期监视/取消监视变量的值(display指令/undisplay指令)

     

     

    12. 跳至指定行

    until 11//跳转到11行

    13. 运行到当前函数的结尾(finish)

    14. 从一个断点直接运行到下一个断点处(c)

    15. 显示调用堆栈(bt)

    16. 修改变量的值:set var

    set var i=100

    17. 显示当前函数内临时变量:info locals 

  • 相关阅读:
    x264参数介绍(帧类型和码率控制,分析和视频可用性信息)
    手写HashMap 手撕哈希表
    MCMC学习笔记-马尔科夫链概述
    网络整体框架介绍
    MySQL 的 NULL 值是怎么存储的?
    直播课堂系统06-搭建项目前端环境
    Netty入门指南之NIO 网络编程
    Math对象:JavaScript中的数学工具
    nginx 搭建高可用集群
    微信小程序开发开篇词 自顶向下,云端赋能:小程序的高效开发之道
  • 原文地址:https://blog.csdn.net/m0_63783532/article/details/132919527
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号