gdb命令笔记

此文为个人笔记,排版随意仅供自己查看。


一、用gdb调试分N步:

1、gcc编译源文件时加上-g选项。

2、在终端中输入 gdb [file]   进入gdb调试模式。

3、在gdb模式下输入命令 l显示源代码(每次显示10行)

4、输入命令 b [行号]  在指定行号设置断点

5、输入命令 r [参数] [参数] ... 开始运行程序。(参数为main函数的参数argv)

6、输入命令  n 单步步过  /  s 单独步入  /  c 继续运行到下个断点 来调试。

7、输入命令  p [表达式]  打印表达式的值

...

n、输入命令 q 退出调试


补充:

1、gcc编译源文件时加上-g选项。

因为用gcc默认选项生成的可执行文件中并没有源代码,因此需要在gcc编译时加上-g才能用gdb调试,例如:

Test:test.o
	g++ test.o -o Test
test.o:test.cc
	g++ test.cc -c -g


各命令全名称:

l  = list

b = break  (breakpoint)

r = run

n = next

s = step

c = continue

p = print

q = quit


命令详解:

1、list 

list [n行数]                       以第n行开始显示

list [n1行数],[n2行数]     显示n1~n2行

list [file源文件名]:[n行数]    以file源文件第n行开始显示

list [file源文件名]:[fun函数名]  显示file源文件的fun函数

2、break

break [n行数]  在某行断点

break [n行数] if [bool型表达式]  条件断点



各种特殊情况处理:

1、打印errno的值

因为errno是一个宏而并非一个变量,因此可以通过这样来打印:  

p *__errno_location()
应该都知道errno是一个宏定义实际是函数吧。


2、调试fork进程

默认情况下fork之后是跟踪原来进程而非父进程,可以通过下面代码切换:

 set follow-fork-mode  child
跟踪子进程

set follow-fork-mode parent
跟踪原进程(默认情况)


反汇编篇:

反汇编相关命令详解:

1、disassemble

disassemble                    显示当前执行行附近的反汇编代码

disassemble [fun函数名]     显示fun函数的反汇编代码

disassemble [addr1起始内存地址] [addr2终结内存地址] 显示addr1~addr2地址之间的反汇编代码

3、watch 

watch [addr内存地址]    当此addr地址内容被写的时候中断


设置指令:

set disassembly-flavor intel    设置反汇编代码为intel格式 (默认为AT&T)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值