GDB的使用

1、介绍:

gdb是unix即unix-like下的调试工具。你可随心所欲的运行程序、指定断点处停留、程序停住是可查看状态、可以改变程序讲一个bug的影响修正从而调试其他bug。 

2、注意事项:必须用-g生成要调试的可执行文件,-g表示带调试信息。

g++ -g gdbtest.cpp –o main

3、基本调试语法:

(1)进入gdb—— gdb/gdb test/gdb test core.3177/

(2)对main文件进行调试

       1)可以进入gdb后执行——file mian

       2)也可以直接gdb file直接进入gdb。

(3)List当前代码—— list 或 l

       1)罗列当前代码—— list  或者 l

       2)罗列15行周围代码——list 15

       3)罗列func函数的源程序—— list func

       4)罗列当前行后面的程序——list

       5)罗列当前行前面的程序——list -

(4)设置Breakpoint—— b

       1)第k行加断点—— b 13

       2)mian函数入口加断点—— b main

       3)执行地址加断点—— b 地址

(5)运行代码Run——  r  (无断点时game over)

:必须执行(Run),否则Step和Next都是没法用的。

(6)单步进入——  s  (进入某个函数 s后回车)

(7)下一步Next——  n   

(8)查看num变量数值—— print  num 或 p  num

(9)继续运行(Continue)—— c   (无断点时就game over)

(10)查看堆栈—— bt

       1)打印全部堆栈—— bt

       2)一个个打印堆栈信息—— down 或 up

(11)退出gdb—— quit/q或者Ctrl 。

(12)对于有参数的程序,有三种方法设置运行的参数

     1)run 172.25.10.112 12345 即可把ip地址和端口传入。

4、多线程的调试:

(1)info threads:显示所有线程

(2)thread ID :切换线程

(3)set scheduler-locking[off|on|step]:对被调线程外的其他线程进行控制。

       1)off:表示不锁定任何线程,即所有线程都可以继续执行。

       2)on:表示只有当前被调线程会继续执行。

       3)step:表示在单步执行的时候,只有当前线程会执行。

(4)frame num  切换栈

(5)bt 显示线程堆栈信息

(6)info r 显示当前帧的寄存器信息 (每一帧的寄存器信息都是不相同的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱齿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值