GDB使用总结
1. GDB概述
GNU发布的调试器,可以查看程序如何运行或崩溃时的状态。
主要功能:
- 启动程序,可以按照自定义的要求运行程序。
- 可让被调试的程序在你所指定的断点处停住。
- 当程序被停住时,可以检查此时程序中所发生的事。
- 动态的改变程序的执行环境。
GDB启动程序
//通过GDB启动/attach一个可程序或打开一个core文件
gdb [options] [executable-file [core-file or process-id]]
//为可执行程序指定执行参数
gdb [options] --args executable-file [inferior-arguments ...]
//为GDB启动指定扩展脚本
gdb [options] [--python|-P] script-file [script-arguments ...]
其他启动参数:
-tui Text User Interface
-s file read symbol table from file
--silent do not print version number
GDB命令特点:
命令别名
自动完成(命令/符号名)
帮助强大:
help class
help all
help command
2. 运行控制类命令:
run(r)
step(s) [count]
next(n) [count]
contine(c) [ignore-count]
finish(fin)
until(u) line
skip file|func
stepi(si)
nexti(ni)
多线程控制命令:
info thread
thread thread-id
thread apply ID1 ID2 command
thread apply all command
set scheduler-locking off|on|step
break location thread thread-id
break location thread thread-id if ...
3. 程序停止点
3.1 断点
break(b) [line]|[function][address]
break(b) [line]|[function][address] if …
condition break-num
command break-num
tbreak(tb) [line]|[function][address]
rbreak(rb) regex
info break [break-num]
delete(d) break-num
disable(dis) break-num [count]
enable(ena) break-num
ignore break-num count
3.2 观察点
watch [-l|-location] expr [thread thread-id]
rwatch [-l|-location] expr [thread thread-id]
awatch [-l|-location] expr [thread thread-id]
info watchpoints
delete(d) watch-num
disable(dis) watch-num
enable(ena) watch-num
condition watch-num
command watch-num
3.3 扑捉点
catch event [exception][exec][fork][syscall][signal][throw]
tcatch event
清除停止点 clear / delete
保存停止点 save breakpoints [file]
4. 状态查看类命令:
list(l) /-tui(Ctrl+x+a切换)
search/forward-search(fo)/reverse-search(rev)
print(p) /format expr
print(p) *array@len
x/nfu addr
set print pretty
set print array on
set print elements unlimited
info [locals][variables][float][vtbl][registers]
whatis / ptype
display
4.1 堆栈查看命令
backtrace(bt)
info frame(f)
frame frame-num
up [frame-num]
down [frame-num]
5. 改变程序运行类命令:
set [var] expr
jump location
return [expression]
call expression
6.内存转储
dump [format] memory filename start_addr end_addr 转储内存某地址范围内容到指定文件
dump [format] value filename expr 转储变量值到指定文件
append [binary] memory filename start_addr end_addr
append [binary] value filename expr
restore filename [binary] bias start end
generate-core-file(gcore) [file] 生成core文件
GDB使用总结的更多相关文章
- linux应用调试技术之GDB和GDBServer
1.调试原理 GDB调试是应用程序在开发板上运行,然后在PC机上对开发板上得应用程序进行调试,PC机运行GDB,开发板上运行GDBServer.在应用程序调试的时候,pc机上的gdb向开发板上的GDB ...
- 新手如何在gdb中存活
网络上已经有很多gdb调试的文章了,为什么我还要写这篇文章呢,因为本文是写给gdb新手的,目的就是通过一个简单的例子来让新手很快上手.一旦上手入门了,其他的问题就可以自己去搜索搞定了.右边是gdb的L ...
- GDB 多线程调试:只停止断点的线程,其他线程任然执行; 或只运行某些线程 其他线程中断
多线程调试之痛 调试器(如VS2008和老版GDB)往往只支持all-stop模式,调试多线程程序时,如果某个线程断在一个断点上,你的调试器会让整个程序freeze,直到你continue这个线程,程 ...
- GDB调试命令
1.查看源码: list [函数名][行数] 2.暂停程序 (1)设置断点: a.break + [源代码行号][源代码函数名][内存地址] b.break ... if condition .. ...
- 关于gdb和shp的FID问题
gdb的FID从1开始,并且FID唯一,从数字化时开始,每个图形对应唯一的FID,删除图形亦删除对应的FID.FID可能出现中断的情况. shp的FID从0开始,并且永远连续.删除图形,则编号在其下面 ...
- GDB调试命令小结
1.启动调试 前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息.gdb program //最常用的用gdb启动程序,开始调试的方 ...
- gdb 基本知识
一 单步执行和跟踪函数调用 先给出一段代码,可以用下面介绍的例子. #include <stdio.h> int add_range(int low, int high) { int i, ...
- GDB 完全教程
一.简介 GDB是一个功能强大的调试器,它是一个自由软件,能够用在许多UNIX平台上.它同时也是Linux系统中的默认调试器.GDB已被移植到许多其他的计算机平台上,并且能够用于调试嵌入式实时系统.一 ...
- GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 分析过程 这是我的C源文件:click here 使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb ...
- gdb可以调试python的pdb么
1.如题: gdb可以调试python的pdb么? 答案:可以,实验如下. 2.实验: 生成一个a.py代码文件,代码如下: import pdb a = 1 print "111" ...
随机推荐
- C#开发BIMFACE系列25 服务端API之获取模型数据10:获取楼层对应面积分区列表
系列目录 [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列22 服务端API之获取模型数据7:获取多个模型的楼层信息>中,返回的楼层信息结果中包含了楼层的具体信 ...
- 【Offer】[10-1] 【斐波那契数列】
题目描述 思路分析 Java代码 代码链接 题目描述  大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). 思路分析 递归的思路,会出现很多重复的 ...
- Spring Cloud(二):服务消费者
创建“服务消费者” 创建一个基础的Spring Boot工程,命名为springboot-consumer,并在pom.xml中引入需要的依赖内容: <dependency> <gr ...
- group by语法
group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表. SELECT子句中的列名必须为分组列或列函数.列函数对于GROUP BY子 ...
- LeetCode第七题
Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 Have you ...
- spring-boot集成spark并使用spark-sql
首先添加相关依赖: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...
- List<Object> 多条件去重
上一篇将到根据某一条件去重List<Object> 对象链表.本文章根据多条件去重List<Object>去重 private List<StaingMD0010> ...
- Android mmap 文件映射到内存介绍
本文链接: Android mmap 文件映射到内存介绍 Android开发中,我们可能需要记录一些文件.例如记录log文件.如果使用流来写文件,频繁操作文件io可能会引起性能问题. 为了降低写文件的 ...
- Chrome 谷歌浏览器安装使用 Postman 和 Sense 插件
博客地址:http://www.moonxy.com 一.前言 Google Chrome 的特点是简洁.快速等.Chrome 支持多标签浏览,每个标签页面都在独立的"沙箱"内运行 ...
- C++类的this指针详解
这篇文章主要讲解隐式this指针的概念,以及如何使用,包含const 先直接给出一个C++Primer里的类,你可能还不能完全看懂,但是不着急,我们一点点解释 class Sales_data { s ...