完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 柠檬守护 于 2016-11-16 15:13 编辑
摘自宋宝华老师博客:http://blog.csdn.net/21cnbao/article/details/7385161 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能:
使用命令gcc –g gdb_example.c –o gdb_example编译上述程序,得到包含调试信息的二进制文件example,执行gdb gdb_example命令进入调试状态:
1、list命令 在gdb中运行list命令(缩写l)可以列出代码,list的具体形式包括:
|
|
相关推荐
5 个讨论
|
|
2、run命令
在gdb中,运行程序使用run命令。在程序运行前,我们可以设置如下4方面的工作环境: 程序运行参数 set args 可指定运行时参数,如:set args 10 20 30 40 50;show args 命令可以查看设置好的运行参数。 运行环境 path show environment [varname]则用于查看环境变量。 工作目录 cd 程序的输入输出 info terminal 用于显示程序用到的终端的模式;gdb中也可以使用重定向控制程序输出,如run > outfile; tty命令可以指定输入输出的终端设备,如:tty /dev/ttyS1。 |
|
|
|
|
|
3、break命令
在gdb中用break命令来设置断点,设置断点的方法包括: break 在进入指定函数时停住,C++中可以使用class::function或function(type, type)格式来指定函数名。 break 在指定行号停住。 break +offset / break -offset 在当前行号的前面或后面的offset行停住,offiset为自然数。 break filename:linenum 在源文件filename的linenum行处停住。 break filename:function 在源文件filename的function函数的入口处停住。 break *address 在程序运行的内存地址处停住。 break break命令没有参数时,表示在下一条指令处停住。 break ... if “...”可以是上述的break 查看断点时,可使用info命令,如info breakpoints [n]、info break [n](n表示断点号)。 |
|
|
|
|
|
4、单步命令
在调试过程中,next命令用于单步执行,类似VC++中的step over。next的单步不会进入函数的内部,与next对应的step(缩写s)命令则在单步执行一个函数时,会进入其内部,类似VC++中的step into。下面演示了step命令的执行情况,在23行的add()函数调用处执行step会进入其内部的“return a+b;”语句:
单步执行的更复杂用法包括: step 单步跟踪,如果有函数调用,则进入该函数(进入函数的前提是,此函数被编译有debug信息)。step后面不加count表示一条条地执行,加表示执行后面的count条指令,然后再停住。 next 单步跟踪,如果有函数调用,它不会进入该函数。同样地,next后面不加count表示一条条地执行,加表示执行后面的count条指令,然后再停住。 set step-mode set step-mode on用于打开step-mode模式,这样,在进行单步跟踪时,程序不会因为没有debug信息而不停住,这个参数的设置可便于查看机器码。set step-mod off用于关闭step-mode模式。 finish 运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息。 until (缩写u) 一直在循环体内执行单步,退不出来是一件令人烦恼的事情,until命令可以运行程序直到退出循环体。 stepi(缩写si)和nexti(缩写ni) stepi和nexti用于单步跟踪一条机器指令,一条程序代码有可能由数条机器指令完成,stepi和nexti可以单步执行机器指令。 另外,运行“display/i $pc”命令后,单步跟踪会在打出程序代码的同时打出机器指令,即汇编代码。 |
|
|
|
|
|
5、continue命令
当程序被停住后,可以使用continue命令(缩写c,fg命令同continue命令)恢复程序的运行直到程序结束,或到达下一个断点,命令格式为:
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 20:18 , Processed in 0.632380 second(s), Total 54, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号