gdb小结

1 启动gdb
+ gdb 程序名

2 载入程序
+ file 程序名

3 退出gdb
+ quit Ctrl-D

4 运行程序
+ run + 参数

5 查看程序信息
+ 查看断点信息 info br
+ 查看当前源程序 info source
+ 查看堆栈信息 info stack
+ 查看当前的参数 info args

6 列出一段源程序
+ 列出某个函数 list FUNCTION
+ 列出某行函数 list LINENUM
+ 接着前一次继续显示 list
+ 显示前一次之前的源程序 list -
+ 显示另一个文件的一段程序 list FILENAME:FUNCTION or list FILENAME:LINENUM\

7 设置断点
+ 在函数入口设置断点 break FUNCTION
+ 在当前源文件某行上设置断点 break LINENUM
+ 在另一源文件的某行设置断点 break FILENAME:LINENUM
+ 在某个地址上设置断点 break *ADDRESS
+ 条件断点 break ..if COND
+ 删除断点 delete BREAKNUM

8 设置监视点
+ watch EXPRESSION

9 检查数据
+ print exp

10 修改变量值
+ set varible=value

10 检查内存值
+ x /NFU ADDR
其中x是examine的意思,N代表重复数,F代表输出格式(见2.13),U代表每个数据单位的大小。U可以去如下值:
b :字节(byte)
h :双字节数值
w :四字节数值
g :八字节数值
因此,上面的指令可以这样解释:从ADDR地址开始,以F格式显示N个U数值。
例如:x/4ub 0x4000
会以无符号十进制整数格式(u)显示四个字节(b),0x4000,0x4001,0x4002,0x4003。

11 单步执行指令
+ step 跟踪进入一个函数
+ next 则不会进入函数

12 继续执行指令
+ continue

时间: 2024-11-23 16:16:47

gdb小结的相关文章

gdb调试小结

一.启动调试 测试程序 1 #include<iostream> 2 using namespace std; 3 class AA 4 { 5 void f(){} 6 }; 7 int main() 8 { 9 cout<<sizeof(AA)<<endl; 10 AA a; 11 cout<<sizeof(a); 12 return 0; 13 } g++/gcc 命令加-g表示使用了gdb调试: file+生成的可执行文件(test):导入调试文件

Linux调试工具strace和gdb常用命令小结

strace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用. strace调试工具 strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数.返回值.执行时间.在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,这是通过系统调用发起并完成的. strace常用参数: -c 统计每种系统调用执行的时间.调用次数.出错次数,程序退出时给出报告 -p pid 跟踪指定的进程,可以使用多个-p同时跟踪多个进程 -

GDB调试命令小结

1.启动调试 前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息.gdb program //最常用的用gdb启动程序,开始调试的方式gdb program core //用gdb查看core dump文件,跟踪程序core的原因gdb program pid //用gdb调试已经开始运行的程序,指定pid即可gdb attach pid //用gdb调试已经开始运行的程序,指定pid即可 2.调试命令(1)执行命令模式-bat

GDB多进程调试(转)

http://www.cnblogs.com/ggjucheng/archive/2011/12/15/2288710.html GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大.对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统: 进程  Proc2 是 Proc1 的子进程,Proc3 又是 Proc2 的子进程.如何使用 GDB 调试 proc2 或者 proc3 呢? 实际上,GDB 没有对多进程程序调试提供直接支持.例如,使用G

使用 GDB 调试多进程程序

GDB 是 linux 系统上常用的调试工具,本文介绍了使用 GDB 调试多进程程序的几种方法,并对各种方法进行比较. 3 评论 田 强 ([email protected]), 软件工程师, IBM中国软件开发中心 2007 年 7 月 30 日 内容 在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大.对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统: 进程

Linux环境下段错误的产生原因及调试方法小结(转)

最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且 项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation Fault).借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决. 1. 段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址.访问了系统保护的内存地址.访问了只读的内存地址等等情况.这里贴一个对于“段

GDB Core,gdb 调试大全,core文件调试

编译: gcc -g -o hello hello.c gdb 调试: 基本 gdb 命令. 命 令 描 述 小结:常用的gdb命令 backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where) breakpoint 在程序中设置一个断点 cd 改变当前工作目录 clear 删除刚才停止处的断点 commands 命中断点时,列出将要执行的命令 continue 从断点开始继续执行 delete 删除一个断点或监测点:也可与其他命令一起使用 display 程序停

Linux GCC GDB 第二节

之前想验证一些关于堆栈的问题,但是没什么好方法,printf实在局限,流于表面,只间表象(值.范围.规律)不见真身(地址.寄存器.过程),所以想到了gdb--一个强大的调试工具,还能看汇编代码,现在先把这两天学的常用的命令做一个小结,以后有用到的可能再来更新一下: 括号内为全称补全,缩写全称均可用. 例:(e)x(amine)表示既可以用x又可以用examine (gdb)代表gdb环境命令行提示符. 关于缩写,非常类似Linux的shell中的tab功能,但是与shell不同的是有默认选择:

Linux环境下段错误的产生原因及调试方法小结

最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation Fault).借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决. 1. 段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址.访问了系统保护的内存地址.访问了只读的内存地址等等情况.这里贴一个对于“段错