`

gdb命令和使用示例

 
阅读更多

 

原文链接: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。

 

1
5
分享到:
评论

相关推荐

    GDB使用详解及实例

    在GDB中,可以使用`list`或`l`命令列出源代码。例如: ```bash (gdb) l ``` 这将显示源代码的部分内容,可以通过多次输入`l`来查看更多的代码。 **3. 设置断点** 在GDB中,可以使用`break`或`b`命令设置断点。...

    gdb调试命令及实例精选

    在本文中,我们将对 GDB 调试命令进行详细介绍,并提供实例来帮助读者更好地理解和掌握这些命令。 一、列文件清单 (list) GDB 的 list 命令可以用来列出当前文件的源代码,可以指定要列出的行数和范围。例如,list...

    gdb命令详解.pdf

    ### GDB命令详解 #### 一、GDB简介与核心功能 GDB(GNU Debugger)是一款强大且功能全面的调试工具,主要用于Unix类操作系统(包括Linux等)中的C/C++程序调试。它允许用户控制程序的执行流程,观察并修改程序状态...

    GDB命令大全

    ### GDB命令大全详解 #### 一、简介 GNU Debugger(GDB)是GNU软件集合中的标准调试器,因其强大的功能和广泛的兼容性而在开发者群体中广受好评。GDB支持多种类UNIX操作系统,并能够对C、C++、Pascal及FORTRAN等...

    Linux下GDB命令经典教程

    ##### 4.4 使用GDB命令 GDB提供了丰富的命令集,下面列举了一些常用的命令及其用途: - **断点设置** - `break` 或 `b`: 设置断点。例如,`b main` 将在main函数入口处设置断点。 - **程序控制** - `run` 或 `r`:...

    gdb调试常用命令总结

    - `threadapply all command`可以让所有线程执行指定的gdb命令。 - 示例:`(gdb) threadapply all bt` - 这条命令会在所有线程中执行`bt`(backtrace)命令,打印出所有线程的堆栈跟踪信息。 5. **控制线程执行*...

    GDB调试精粹及使用实例

    ### GDB调试精粹及使用实例 #### 一、概览 GDB(GNU调试器)是一款强大的开源调试工具,广泛应用于Linux环境下的程序调试。本文档将通过一系列实例介绍GDB的基本用法及其高级特性。 #### 二、列文件清单 在调试...

    GDB使用详解(附有实例)

    当设置断点时,GDB会使用内存读写命令,替换原指令为TRAP指令或其他触发中断的操作码,使得程序执行时控制权转交给调试stub。调试stub则负责收集当前执行状态并传递给GDB,然后等待GDB的进一步指令。 以Hitachi SH-...

    gdb调试常用命令大全

    ### GDB调试常用命令详解 #### 一、GDB简介 GDB(GNU Debugger)是一款由GNU项目开发的开源调试工具,广泛应用于Unix系统及类Unix操作系统中,如Linux、BSD等。它允许用户对程序进行细致入微的调试,包括但不限于...

    gdb编译器的使用1

    在上面的示例代码中,我们可以使用 gdb 命令来控制调试过程,例如使用 next 命令单步执行程序,使用 print 命令打印变量的值。 4. 汇编风格:汇编风格是指在 gdb 中使用汇编语言风格来编写代码。汇编风格的代码通常...

    GDB调试精粹及使用实例.doc

    ### GDB调试精粹及使用实例 #### 一、GDB简介 GDB(GNU Debugger)是一款用于Linux环境下的开源调试工具,广泛应用于C语言编程的调试过程中。它提供了丰富的命令集来帮助开发者查找和修复代码中的错误。本文将详细...

    gdb详细使用手册,pdf版本,希望对您有所帮助

    本文将详细介绍GDB的核心功能、使用方法以及一个具体的调试实例,旨在帮助读者深入了解并掌握GDB的使用技巧。 #### GDB核心功能概览 GDB的主要功能包括但不限于: 1. **程序启动与控制**:允许用户自定义程序的...

    gdb手册debuging with gdb 中文

    - GDB命令遵循一定的语法结构,例如`command [arguments]`。 **3.2 命令补全** - GDB支持命令补全功能,通过按Tab键可以完成命令或文件名的补全。 **3.3 帮助** - 使用`help`命令获取帮助信息。 #### 四、在GDB...

    linux&GDB调试器使用手册中文版

    - 示例帮助用户理解如何在GDB环境下逐步调试程序,并解释了如何读取源代码和调试符号,以及如何使用GDB命令进行有效的调试。 以上总结了GDB调试器的关键知识点,从GDB的安装、基本使用、高级功能到具体的调试实例...

    比较全面的gdb调试命令

    以下是一些常用的GDB命令及其应用场景: ##### 1. 启动GDB与程序 - **`gdb [program]`**:启动GDB并加载指定的可执行程序。 - 示例:`gdb tst` 进入GDB后,可以通过命令`l`或`list`来查看源代码,默认显示当前...

    gdb调试和执行分离-示例程序

    在这个过程中,链接提供的博客文章`http://blog.csdn.net/qq123386926/article/details/50017465`应该提供了具体的示例代码和操作步骤,包括如何配置和使用GDB的远程调试功能。你可以参考这篇文章来深入理解和实践...

Global site tag (gtag.js) - Google Analytics