原文链接:http://www.javaarch.net/jiagoushi/799.htm
gdb命令和使用示例 b main - 在main函数开始处设置断点 b - 在当前行设置断点 b N - 在第N行设置断点 b +N - 在当前行后第N行设置断点 b fn - 在函数fn出设置断点 d N - 删除第N个断点 info break - 查看所有断点 r - 继续执行,直到有异常或者退出 c - c继续到下一个断点 f - 执行直到当前函数结束 s - 单步执行 s N - 执行下面N行 n - 单步跳过执行 u N - 执行到当前行所在的前N行处 p var - 打印当前变量var的值 bt - 打印当前堆栈信息 u - 执行到当前堆栈的上一个 d - 执行到当前堆栈的下一个 q - 退出gdb 示例: #include <iostream> using namespace std; void setint(int*, int); int main() { int a; setint(&a, 10); cout << a << endl; int* b; setint(b, 10); cout << *b << endl; return 0; } void setint(int* ip, int i) { *ip = i; } 编译: $g++ -g crash.cc -o crash 执行: segmentation fault (core dumped) 使用gdb调试这个error $ gdb crash (gdb) r Starting program: /home/tmp/crash 10 10 Program received signal SIGSEGV, Segmentation fault. 0x4000b4d9 in _dl_fini () from /lib/ld-linux.so.2 (gdb) where #0 0x4000b4d9 in _dl_fini () from /lib/ld-linux.so.2 #1 0x40132a12 in exit () from /lib/libc.so.6 #2 0x4011cdc6 in __libc_start_main () from /lib/libc.so.6 #3 0x080485f1 in _start () (gdb) (gdb) b main # Set a breakpoint at the beginning of the function main (gdb) r # Run the program, but break immediately due to the breakpoint. (gdb) n # n = next, runs one line of the program (gdb) n (gdb) s setint(int*, int) (ip=0x400143e0, i=10) at crash2.C:20 # s = step, is like next, but it will step into functions. # In this case the function stepped into is setint. (gdb) p ip $3 = (int *) 0x400143e0 (gdb) p *ip 1073827128 这里ip的指针没有初始化,所以指向内存位置是随机的,这里会导致core dump。
相关推荐
在GDB中,可以使用`list`或`l`命令列出源代码。例如: ```bash (gdb) l ``` 这将显示源代码的部分内容,可以通过多次输入`l`来查看更多的代码。 **3. 设置断点** 在GDB中,可以使用`break`或`b`命令设置断点。...
在本文中,我们将对 GDB 调试命令进行详细介绍,并提供实例来帮助读者更好地理解和掌握这些命令。 一、列文件清单 (list) GDB 的 list 命令可以用来列出当前文件的源代码,可以指定要列出的行数和范围。例如,list...
### GDB命令详解 #### 一、GDB简介与核心功能 GDB(GNU Debugger)是一款强大且功能全面的调试工具,主要用于Unix类操作系统(包括Linux等)中的C/C++程序调试。它允许用户控制程序的执行流程,观察并修改程序状态...
### GDB命令大全详解 #### 一、简介 GNU Debugger(GDB)是GNU软件集合中的标准调试器,因其强大的功能和广泛的兼容性而在开发者群体中广受好评。GDB支持多种类UNIX操作系统,并能够对C、C++、Pascal及FORTRAN等...
##### 4.4 使用GDB命令 GDB提供了丰富的命令集,下面列举了一些常用的命令及其用途: - **断点设置** - `break` 或 `b`: 设置断点。例如,`b main` 将在main函数入口处设置断点。 - **程序控制** - `run` 或 `r`:...
- `threadapply all command`可以让所有线程执行指定的gdb命令。 - 示例:`(gdb) threadapply all bt` - 这条命令会在所有线程中执行`bt`(backtrace)命令,打印出所有线程的堆栈跟踪信息。 5. **控制线程执行*...
### GDB调试精粹及使用实例 #### 一、概览 GDB(GNU调试器)是一款强大的开源调试工具,广泛应用于Linux环境下的程序调试。本文档将通过一系列实例介绍GDB的基本用法及其高级特性。 #### 二、列文件清单 在调试...
当设置断点时,GDB会使用内存读写命令,替换原指令为TRAP指令或其他触发中断的操作码,使得程序执行时控制权转交给调试stub。调试stub则负责收集当前执行状态并传递给GDB,然后等待GDB的进一步指令。 以Hitachi SH-...
### GDB调试常用命令详解 #### 一、GDB简介 GDB(GNU Debugger)是一款由GNU项目开发的开源调试工具,广泛应用于Unix系统及类Unix操作系统中,如Linux、BSD等。它允许用户对程序进行细致入微的调试,包括但不限于...
在上面的示例代码中,我们可以使用 gdb 命令来控制调试过程,例如使用 next 命令单步执行程序,使用 print 命令打印变量的值。 4. 汇编风格:汇编风格是指在 gdb 中使用汇编语言风格来编写代码。汇编风格的代码通常...
### GDB调试精粹及使用实例 #### 一、GDB简介 GDB(GNU Debugger)是一款用于Linux环境下的开源调试工具,广泛应用于C语言编程的调试过程中。它提供了丰富的命令集来帮助开发者查找和修复代码中的错误。本文将详细...
本文将详细介绍GDB的核心功能、使用方法以及一个具体的调试实例,旨在帮助读者深入了解并掌握GDB的使用技巧。 #### GDB核心功能概览 GDB的主要功能包括但不限于: 1. **程序启动与控制**:允许用户自定义程序的...
- GDB命令遵循一定的语法结构,例如`command [arguments]`。 **3.2 命令补全** - GDB支持命令补全功能,通过按Tab键可以完成命令或文件名的补全。 **3.3 帮助** - 使用`help`命令获取帮助信息。 #### 四、在GDB...
- 示例帮助用户理解如何在GDB环境下逐步调试程序,并解释了如何读取源代码和调试符号,以及如何使用GDB命令进行有效的调试。 以上总结了GDB调试器的关键知识点,从GDB的安装、基本使用、高级功能到具体的调试实例...
以下是一些常用的GDB命令及其应用场景: ##### 1. 启动GDB与程序 - **`gdb [program]`**:启动GDB并加载指定的可执行程序。 - 示例:`gdb tst` 进入GDB后,可以通过命令`l`或`list`来查看源代码,默认显示当前...
在这个过程中,链接提供的博客文章`http://blog.csdn.net/qq123386926/article/details/50017465`应该提供了具体的示例代码和操作步骤,包括如何配置和使用GDB的远程调试功能。你可以参考这篇文章来深入理解和实践...