gdb调试攻略

简介

gdb是一个由GNU开源组织发布的、Unix/Linux操作系统下的、基于命令行的、功能强大的程序调试工具。相比于VS里面的图形化调试工具,其功能更加强大。

安装

sudo apt-get install gdb

调试步骤

  1. 编译:gcc -g hello.c -o hello (在编译选项加入 -g )
  2. 调试:gdb hello
  3. 使用gdb命令进行调试

常用命令

运行:
  • run / r:运行程序,遇到断点处停止
  • continue / c:继续执行,到下一个断点处
  • next / n:单步执行且不进入函数
  • step / s:单步执行且进入函数
  • until:在循环体中运行直到退出循环
  • finish:运行程序直到当前函数完成返回
  • call:调用程序中可见的函数并可传参 - call func(params)
  • enter(回车键):重复上次指令
  • quit / q:退出gdb
断点
  • break n:在第n行设置断点
  • clear n:清楚第n行的断点
  • break func():在程序func()入口处设置断点
  • delete n:删除第n个断点
  • disable n:暂停第n个断点
  • enable n:开启第n个断点
  • info b:显示当前断点的设置情况
  • delete breakpoints:清楚所有的断点
查看源码
  • list / l:列出源代码,默认10行 - list
  • list n:以n行为中心列出前后10行
  • list func():显示该函数的源代码
打印表达式
  • print / p 表达式:打印表达式的值,表达式可以为变量、字符串、函数调用
  • print &变量:查看变量所在地址(指针)
  • x addr:查看addr地址的内存
  • display 表达式:设置每次单步运行后输出该表达式的值
  • watch 表达式:监视表达式,当其改变时输出前后变化
  • whtatis:查询变量或函数
  • info function:查询函数
  • info locals:显示当前堆栈页的所有变量
  • info registers:显示当前寄存器的值
查询运行信息
  • where / bt:当前运行的堆栈列表
  • bt backtrace:显示当前调用堆栈
  • up / down:改变堆栈显示的深度
  • set args参数:指定运行时的参数
  • show args参数:查看设置好的参数
  • info program: 查看程序是否在运行,进程号,被暂停的原因
分割窗口
  • layout src:显示源代码窗口
  • layout asm:显示反汇编窗口
  • layout split:显示源代码、反汇编窗口
  • layout regs:显示源代码、反汇编、CPU寄存器窗口
  • Ctrl + L:刷新窗口
  • Ctrl + x + a:退出layout
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 程序调试的基本思想是“分析现象->假设错误原因->产生新的现象去验证假设”这样一个循环过程,根据现象如何假设错误原...
    Manfred_Zone阅读 16,658评论 0 26
  • gdb是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 启动...
    techping阅读 5,395评论 0 2
  • layout: wikititle: Android逆向分析笔记categories: Reverse_Engin...
    超哥__阅读 13,661评论 1 17
  • 文/小笠无敌 昨天下午,安安终于睡熟了,这几天感冒加咳嗽让她睡不好,动不动就哭。我的火气也有点大,对安爸总是冷嘲热...
    荔枝小蜜阅读 3,375评论 7 13
  • 想做大?想做强?请放弃熟人市场、用心开扩新渠道! 有些人做市场、搞销售、担心自己没人脉、朋友同学少、怕做不到、做不...
    七老袁满阅读 2,338评论 0 2