摘要:在调试程序的过程中,可以自由地查看相关的源代码(如果有源代码的话)是一项最基本的特性。 一些IDE在这方面做得相当好,GDB当然也提供了这项特性,虽然不如IDE直观,但在一定程度上要比IDE更加灵活和快捷。 GDB之所以能够知道对应的源代码,是因为调试版的可执行程序中记录了源代码的位置;因为源代码的位置在编译之后可能会移动到其它地方,所以GDB还会在当前目录中查找源代码,另外GDB也允许明确指定源代码的搜索位置。默认情况下,GDB在编译时目录中搜索,如果失败则在当前目录中搜索,即$cdir:$cwd,其中$cdir指的是编译时目录(compilation directory),$...
阅读全文
摘要:在调试程序的过程中,查看程序的函数调用堆栈是一项最基本的任务,几乎所有的图形调试器都支持这项特性。 GDB调试器当然也支持这一特性,但是功能更加灵活和丰富。 GDB将当前函数的栈帧编号为0,为外层函数的栈帧依次加1,这些编号将成为一些GDB命令的参数,以指明将要操作的是哪一个函数的栈帧。 GDB还支持使用Address作为栈帧的标识符,可在栈帧编号被破坏的情况下使用。 1.在栈帧之间切换 GDB中有很多针对调用堆栈的命令,都需要一个目标栈帧,例如打印局部变量值的命令。 frame args将当前栈帧设置为args(编号或Address)指定的栈帧,并打印该...
阅读全文
摘要:有些时候,在你向连接好的Android机器中按照程序时会遭遇失败,logcat提示“unable to open sync connection”。 一般情况下,重启手机几乎肯定可以解决这个问题。 如果不方便重启手机的话,可以试试先关闭“USB调试”选项然后重新打开它,应该可以解决问题。 但是在一些极端情况下,重新设置“USB调试”选项并不能解决问题,下面是一个凑效的方法(需要root权限): 1.在手机上安装好“超级终端”这款软件。 2.在“超级终端”中运行"su"命令获得root权限。 3.运行"ps -ef | grep adbd"命令找到adbd
阅读全文
摘要:下面是几篇非常好的GDB使用指南:http://www.cs.cmu.edu/~gilpin/tutorial/http://oss.org.cn/ossdocs/gnu/linux/gdb.htmlhttp://coolshell.cn/articles/3643.htmlhttp://www.yolinux.com/TUTORIALS/GDB-Commands.html
阅读全文