现在位置: 首页 > GDB
众所周知,C++的STL容器的实现并不直观,直接使用gdb之类的debugger查看内存是需要周转多次才能看到具体的内容的。 在Visual Studio之类的IDE中内置了一些脚本,用来较为友好的显示容器内的元素。GDB的pretty-printer脚本提供了类似的功能。 举个例子: 假设我们有如下c++代码 std::vector<int> vec{1,2,3,4}; std::string s="this is my string."; 在关闭和开启pretty-printer的情况下,我们使用GDB查看vec和s...
阅读全文
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...
阅读全文
2018-02-16 19:10 工业·编程 ⁄ 共 833字 暂无评论
1.ubuntun14.04下安装cgdb cong@msi:~$ sudo apt-get install cgdb 2. 使用: cgdb ./hello就可以了 a. cgdb分为上面的vi窗口与下面的gdb窗口 ESC-->切到vi窗口 i -->切到gdb窗口 - -->减小vi窗口 = -->增大vi窗口 shift - -->减小很多vi窗口 shift = -->增大很多vi窗口 b.断点 空格添加/删除断点 c.  gdbinit脚本不能用 warning: File "/work/ffmpeg/jpeg/jpegc/.gdbinit" auto-loading has...
阅读全文
2018-01-16 19:08 工业·编程 ⁄ 共 43字 暂无评论
方法一:gdb -tui a.out 方法二:进入gdb后,Ctl+x,Ctl+a进入tui
阅读全文
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...
阅读全文