gdb使用

转自清华大学操作系统实验指导书

gdb 是功能强大的调试程序,可完成如下的调试任务:

  • 设置断点
  • 监视程序变量的值
  • 程序的单步(step in/step over)执行
  • 显示/修改变量的值
  • 显示/修改寄存器
  • 查看程序的堆栈情况
  • 远程调试
  • 调试线程

在可以使用 gdb 调试程序之前,必须使用 -g 或 –ggdb编译选项编译源文件。运行 gdb 调试程序时通常使用如下的命令:

gdb progname
gdb -x file //从文件中读取gdb命令
gdb -q //quiet 不要打印和介绍版权信息
gdb -tui //显示代码窗口

在 gdb 提示符处键入help,将列出命令的分类,主要的分类有:

  • aliases:命令别名
  • breakpoints:断点定义;
  • data:数据查看;
  • files:指定并查看文件;
  • internals:维护命令;
  • running:程序执行;
  • stack:调用栈查看;
  • status:状态查看;
  • tracepoints:跟踪程序执行。

键入 help 后跟命令的分类名,可获得该类命令的详细清单。gdb的常用命令如下表所示。

表 gdb 的常用命令

break FILENAME:NUM 在特定源文件特定行上设置断点
clear FILENAME:NUM 删除设置在特定源文件特定行上的断点
run 运行调试程序
step 单步执行调试程序,不会直接执行函数
next 单步执行调试程序,会直接执行函数
backtrace 显示所有的调用栈帧。该命令可用来显示函数的调用顺序
where continue 继续执行正在调试的程序
display EXPR 每次程序停止后显示表达式的值,表达式由程序定义的变量组成
file FILENAME 装载指定的可执行文件进行调试
help CMDNAME 显示指定调试命令的帮助信息
info break 显示当前断点列表,包括到达断点处的次数等
info files 显示被调试文件的详细信息
info func 显示被调试程序的所有函数名称
info prog 显示被调试程序的执行状态
info local 显示被调试程序当前函数中的局部变量信息
info var 显示被调试程序的所有全局和静态变量名称
kill 终止正在被调试的程序
list 显示被调试程序的源代码
quit 退出 gdb
info win 显示窗口的大小
layout next 切换到下一个布局模式
layout prev 切换到上一个布局模式
layout src 只显示源代码
layout asm 只显示汇编代码
layout split 显示源代码和汇编代码
layout regs 增加寄存器内容显示
focus cmd/src/asm/regs/next/prev 切换当前窗口
refresh 刷新所有窗口
tui reg next 显示下一组寄存器
tui reg system 显示系统寄存器
update 更新源代码窗口和当前执行点
winheight name +/- line 调整name窗口的高度
tabset nchar 设置tab为nchar个字符

gdb的使用(转)的更多相关文章

  1. linux应用调试技术之GDB和GDBServer

    1.调试原理 GDB调试是应用程序在开发板上运行,然后在PC机上对开发板上得应用程序进行调试,PC机运行GDB,开发板上运行GDBServer.在应用程序调试的时候,pc机上的gdb向开发板上的GDB ...

  2. 新手如何在gdb中存活

    网络上已经有很多gdb调试的文章了,为什么我还要写这篇文章呢,因为本文是写给gdb新手的,目的就是通过一个简单的例子来让新手很快上手.一旦上手入门了,其他的问题就可以自己去搜索搞定了.右边是gdb的L ...

  3. GDB 多线程调试:只停止断点的线程,其他线程任然执行; 或只运行某些线程 其他线程中断

    多线程调试之痛 调试器(如VS2008和老版GDB)往往只支持all-stop模式,调试多线程程序时,如果某个线程断在一个断点上,你的调试器会让整个程序freeze,直到你continue这个线程,程 ...

  4. GDB调试命令

    1.查看源码: list [函数名][行数] 2.暂停程序 (1)设置断点: a.break + [源代码行号][源代码函数名][内存地址] b.break ... if condition   .. ...

  5. 关于gdb和shp的FID问题

    gdb的FID从1开始,并且FID唯一,从数字化时开始,每个图形对应唯一的FID,删除图形亦删除对应的FID.FID可能出现中断的情况. shp的FID从0开始,并且永远连续.删除图形,则编号在其下面 ...

  6. GDB调试命令小结

    1.启动调试 前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息.gdb program //最常用的用gdb启动程序,开始调试的方 ...

  7. gdb 基本知识

    一 单步执行和跟踪函数调用 先给出一段代码,可以用下面介绍的例子. #include <stdio.h> int add_range(int low, int high) { int i, ...

  8. GDB 完全教程

    一.简介 GDB是一个功能强大的调试器,它是一个自由软件,能够用在许多UNIX平台上.它同时也是Linux系统中的默认调试器.GDB已被移植到许多其他的计算机平台上,并且能够用于调试嵌入式实时系统.一 ...

  9. GDB调试汇编堆栈过程分析

    GDB调试汇编堆栈过程分析 分析过程 这是我的C源文件:click here 使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb ...

  10. gdb可以调试python的pdb么

    1.如题: gdb可以调试python的pdb么? 答案:可以,实验如下. 2.实验: 生成一个a.py代码文件,代码如下: import pdb a = 1 print "111" ...

随机推荐

  1. 【HTTP】长连接和短连接

    1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...

  2. VHDL之code structure

     1 VHDL units VHDL code is composed of at least 3 fundamental sections: 1) LIBRARY declarations: Con ...

  3. react基础篇一

    jsx简介 const element = <h1>Hello, world!</h1>; 这种看起来可能有些奇怪的标签语法既不是字符串也不是 HTML. 它被称为 JSX, ...

  4. 09--c++ 类的继承与派生

    c++ 类的继承与派生   一.基本概念 1.类的继承,是新的类从已有类那里得到已有的特性.或从已有类产生新类的过程就是类的派生.原有的类称为基类或父类,产生的新类称为派生类或子类.   2.派生类的 ...

  5. 【sqli-labs】 less2 GET - Error based - Intiger based (基于错误的GET整型注入)

    与less1相同,直接走流程 提交参数,直接order by http://localhost/sqli/Less-2/?id=1 order by 1%23 http://localhost/sql ...

  6. 【转载】java list的一些基本操作

    1.list中添加,获取,删除元素 List<String> person=new ArrayList<>(); person.add("jackie"); ...

  7. 2.3 SVN在myeclipse中的使用

    一.将svn插件文件夹复制到myeclipse的dropins目录下,并重启myeclipse 二.从SVN中检查项目到myeclipse  2.打开myeclipse,点击window的show v ...

  8. redis liunx系统安装

    同事总结非常好,借鉴一下 原文地址:https://www.cnblogs.com/dslx/p/9291535.html redis安装 下载redis的安装包上传到Linux服务器,安装包如下 h ...

  9. 如鹏网JAVA培训笔记2(晓伟整理)

    输入输出: 我们使用System.out.println(“abc”);作用:向控制台输入东西. Scaner sc=new Scanner(System.in)://从输入流中去读取 int age ...

  10. Java基础学习总结(66)——配置管理库typesafe.config教程

    Typesafe的Config库,纯Java写成.零外部依赖.代码精简.功能灵活.API友好.支持Java properties.JSON.JSON超集格式HOCON以及环境变量.它也是Akka的配置 ...