现在位置: 首页 > GDB
2019-08-31 12:55 工业·编程 ⁄ 共 13965字 暂无评论
GDB, 即GNU调试器(GNU Debugger)。它诞生自开源软件基金会(Free Software Foundation)成立之初的第一批程序,并一直是免费和开源软件系统中的主要成员。最初GDB只是Unix系统上一个简单的源码层次的调试器,代码量不过数千行C代码,后来逐步发展壮大,拓展到包括嵌入式系统在内多个平台,代码量也达到了上百万行。 GDB在发展,不断地满足着新的用户需求并增加新的功能。这一章将我们将介绍GDB的整体内部结构,探讨一下GDB是如何...
阅读全文
2018-10-28 13:42 工业·编程 ⁄ 共 516字 暂无评论
gdb有一组命令可辅助多线程程序的调试。 info threads 显示当前可调试的所有线程。gdb会为每个线程分配一个ID,我们可以使用这个ID来操作对应的线程。ID前面有“*”的线程是当前被调试的线程。 thread ID 调试目标ID指定的线程。 set scheduler-locking[off|on|step] 调试多线程程序时,默认除了被调试的线程在执行外,其他线程也在继续执行,但有的时候我们希望只让被调试的线程运行。这可以通过这个命令来实现。 该命令设置...
阅读全文
2018-10-27 13:38 工业·编程 ⁄ 共 469字 暂无评论
  如果一个进程通过fork系统调用创建了子进程,gdb会继续调试原来的进程,子进程则正常运行。那么该如何调试子进程呢? 单独调试子进程   子进程从本质上说也是一个进程,因此我们可以用通用的gdb调试方法来调试他。 举例来说如果要调试一个服务器中的某一个子进程,我们可以先运行服务器,然后找到目标子进程的PID,再将其附加(attach)到gdb调试器上,具体操作为: $ps -ef | grep 进程名 //通过上述命令的到...
阅读全文
2018-09-15 08:21 工业·编程 ⁄ 共 1243字 暂无评论
gdb是C/C++程序员必备的专业技能,工作中gdb最常用的场景有两个,一个是分析core文件,另一个是调试程序。 分析core文件的方法如下: 1、gdb 程序名 core文件名 2、bt或where命令查看堆栈信息。 3、进入某个栈:f N,f是frame的缩写,N是栈号,如0、1、2、3... 进入到某个栈后,才能通过p命令查看这个栈的临时变量,否则只能查看全局变量。 例如a.out程序core产生了core文件core-a.out-12345,gdb方法如下: gdb a.out core-a.o...
阅读全文
2017-03-14 22:21 工业·编程 ⁄ 共 12381字 暂无评论
    当 GDB(即 GNU Project Debugger)启动时,它在当前用户的主目录中寻找一个名为 .gdbinit 的文件;如果该文件存在,则 GDB 就执行该文件中的所有命令。通常,该文件用于简单的配置命令,如设置所需的缺省汇编程序格式(Intel® 或 Motorola)或用于显示输入和输出数据的缺省基数(十进制或十六进制)。它还可以读取宏编码语言,从而允许实现更强大的自定义。该语言遵循如下基本格式: define <command>...
阅读全文
2016-07-22 23:11 工业·编程 ⁄ 共 16549字 暂无评论
1.       GDB与GCC等其他GNU工具以前,构成了程序开发调试不可缺少的一环. 2.       GDBSERVER源码架构如下: a)         Gdbserver代码简单,本身支持serial或tcp连接 b)         源码位于 gdb/gdbserver下 c)         Server.c...
阅读全文
2016-07-21 23:08 工业·编程 ⁄ 共 882字 暂无评论
  在调试程序的过程中,查看程序的函数调用堆栈是一项最基本的任务,几乎所有的图形调试器都支持这项特性。       GDB调试器当然也支持这一特性,但是功能更加灵活和丰富。       GDB将当前函数的栈帧编号为0,为外层函数的栈帧依次加1,这些编号将成为一些GDB命令的参数,以指明将要操作的是哪一个函数的栈帧。       GDB还支持使用Address...
阅读全文
2016-07-20 23:05 工业·编程 ⁄ 共 2912字 暂无评论
    在调试程序的过程中,可以自由地查看相关的源代码(如果有源代码的话)是一项最基本的特性。       一些IDE在这方面做得相当好,GDB当然也提供了这项特性,虽然不如IDE直观,但在一定程度上要比IDE更加灵活和快捷。       GDB之所以能够知道对应的源代码,是因为调试版的可执行程序中记录了源代码的位置;因为源代码的位置在编译之后可能会移动到其它地...
阅读全文
2016-07-17 22:47 工业·编程 ⁄ 共 1481字 暂无评论
一、gdb简介 gdb:GNU debugger UNIX及UNIX-like下一个强大的命令行的调试工具 gdb调试的整体架构如下图所示: 可以发现gdb调试不管是本地调试还是远程调试,都是基于ptrace系统调用来实现的 二、ptrace ptrace系统调用的原型: long ptrace(enum __ptrace_request request, pid_t pid,void *addr,void *data); ptrace系统调用提供了一种方法,让父进程可以观察和控制其它进程的执行,检查和改变其核心映像及寄存...
阅读全文
2016-07-14 22:33 工业·编程 ⁄ 共 5658字 暂无评论
在对嵌入式进行调试之前,必须要生成调试器。经典地,Linux平台下的调试器为gdb。 1、下载gdb: 下载地址为: http://www.gnu.org/software/gdb/download/ 按照一般的想法,最新版本越好,因此下载7.2这个版本。当然,凡事无绝对。 我们以gdb-7.2.tar.bz2 这个文件为例。 2、解压缩: $ tar jxvf gdb-7.2.tar.bz2 注:小技巧:Linux下一般压缩文件后缀为.tar.bz2和.tar.gz,它们解压...
阅读全文