当程序出错并产生core 时
快速定位出错函数的办法
gdb 程序名 core文件名(一般是core,也可能是core.xxxx)
调试程序使用的键
r run 运行.程序还没有运行前使用
c cuntinue 继续运行。运行中断后继续运行
q 退出
kill 终止调试的程序
h help 帮助
<tab> 命令补全功能
step 跟入函数
next 不跟入函数
b breakpoint 设置断点。
用法:
b 函数名 对此函数进行中断
b 文件名:行号 对此文件中指定行中断.如果是当前文件,那么文件名与:号可以
省略
看当前断点数使用info break.禁止断点disable 断点号.删除delete 断点号.
l list 列出代码行。一次列10 行。连接使用list将会滚动显示. 也可以在list 后面
跟上 文件名:行号
watch 观察一个变量的值。每次中断时都会显示这个变量的值
p print 打印一个变量的值。与watch不同的是print只显示一次
这里在顺便说说如何改变一个 value. 当你下指令 p 的时候,例如你用 p b,
这时候你会看到 b 的 value, 也就是上面的 $1 = 15.
你也同样可以用 p 来改变一个 value, 例如下指令 p b = 100 试试看,
这时候你会发现, b 的 value 就变成 100 了:$1 = 100.
gdb调试正在运行的进程2009年04月18日 星期六 下午 08:21 有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程 只能在系统启动时运行。另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式。GDB可以对正在执行的程序进行调度,它允许开发人员中断程序 并查看其状态,之后还能让这个程序正常地继续执行。
GDB提供了两种方式来调试正在运行的进程:一种是在GDB命令行上指定进程的PID,另一种是在GDB中使用“attach”命令。例如,开发人员可以先启动debugme程序,让其开始等待用户的输入。示例如下:
#./debugme Enter a string to count words:
接下去在另一个虚拟控制台中用下面的命令查出该进程对应的进程号:
# ps -ax | grep debugme 555 pts/1 S 0:00 ./debugme
得到进程的PID后,就可以使用GDB对其进行调试了:
# gdb debugme 555 GNU gdb Red Hat Linux (5.3post-0.20021129.18rh) Attaching to program: /home/xiaowp/debugme, process 555 Reading symbols from /lib/libc.so.6...done. ……
在上面的输出信息中,以Attaching to program开始的行表明GDB已经成功地附加在PID为555的进程上了。另外一种连接到其它进程的方法是先用file命令加载调试时所需的符号表,然后再通过“attaché”命令进行连接:
(gdb) file /home/xiaowp/debugme Reading symbols from /home/xiaowp/debugme...done. (gdb) attach 555 ……
如果想知道程序现在运行到了哪里,同样可以使用“backtrace”命令。当然也可以使用“step”命令对程序进行单步调试。
在完成调试之后,不要忘记用detach命令断开连接,让被调试的进程可以继续正常运行。
分享到:
相关推荐
《GDB使用手册(中文版)》是一份针对Linux系统下强大的源代码级调试工具GDB的详尽指南。GDB,全称GNU Debugger,是开源社区GNU项目的一部分,广泛应用于C、C++、Fortran等语言的程序调试。这份手册以中文的形式,...
### GDB 使用详解 #### 一、GDB简介与安装 GDB(GNU Debugger)是GNU组织发布的一个强大的源代码级调试工具,适用于多种UNIX平台。对于习惯使用图形界面调试工具如VC++或CBIDE的用户来说,在UNIX平台下GDB提供了一...
### GDB使用手册知识点解析 #### 一、GDB简介 **GDB**(GNU Debugger)是由GNU项目开发的一款强大的程序调试工具,主要用于在UNIX及其类操作系统(如Linux)环境中进行程序调试。与常见的图形界面调试工具(如...
### gdb使用手册核心知识点概述 #### 一、gdb简介 - **gdb** (GNU Debugger) 是一个源代码级别的调试器,广泛用于Linux和其他类Unix系统中。 - 它支持多种编程语言,如C、C++等,并且能够帮助开发者在程序运行时...
**GDB使用手册(中文版)** GDB(GNU调试器)是开源世界中最常用的调试器之一,尤其在Linux环境中,它为C、C++、Fortran等编程语言提供了强大的调试支持。本手册将深入介绍如何有效地利用GDB进行程序调试,帮助开发者...
### 使用GDB进行调试 #### 概述 GDB(GNU调试器)是GNU项目下的一款功能强大的开源源代码级调试工具,适用于多种操作系统及编程语言。它支持C、C++等多种编程语言,并且能够在程序运行时对其进行控制,查看变量值...
根据给定的文件内容,以下是关于《gdb使用手册 说明文档》的知识点。 首先,《gdb使用手册 说明文档》是GNU项目下的源码级调试工具GDB(GNU Debugger)的第十版,适用于GDB版本8.0.50.***-git。该手册的作者包括...
以下是关于GDB使用的一些关键知识点: 1. **启动GDB**:通过输入`gdb PROGRAM`来启动GDB,并加载需要调试的程序`PROGRAM`。 2. **设置源代码路径**:使用`directory DIR`命令将`DIR`添加到源代码搜索路径,以便GDB...
### gdb使用手册大全 #### 精通Linux代码调试必学的工具书 在软件开发领域,特别是针对基于Linux或Unix系统的应用编程,一个高效且深入的代码调试工具显得尤为重要。gdb,作为GNU开源组织发布的一款强大调试工具,...
下面将详细介绍GDB的一些主要使用方法。 一、列文件清单 `list`命令用于查看源代码文件中的代码行。例如,`list line1,line2`会显示从line1到line2之间的代码。这对于理解程序执行流程非常有帮助。 二、执行程序 `...
《GDB使用详解》 GDB(GNU Debugger)是一款强大的调试工具,广泛应用于软件开发,尤其是C、C++、JAVA、PASCAL等语言的调试。它可以与多种微处理器架构和操作系统兼容,甚至能通过串行线或网络连接对远程嵌入式系统...
**GDB 使用手册(中文)** GDB,全称GNU Debugger,是GNU项目下的一个开源、跨平台的程序调试工具...这份GDB使用手册的中文版将帮助中文用户无障碍地学习和应用GDB,无论你是初学者还是经验丰富的程序员,都能从中受益。
GDB的使用虽然没有图形化调试器直观,但它能实现一些图形界面无法完成的高级调试任务。 首先,GDB可以帮助开发者启动并控制程序的执行。你可以设置自定义的启动参数,让程序按特定条件运行,例如在特定输入或状态...
对于后者,若程序崩溃产生了核心转储文件,可以使用`gdb execfile corefile`,或者如果只知道进程ID,可以使用`gdb execfile processid`。 3. **运行与控制程序**: - `run`:开始运行程序。 - `kill`:结束正在...
根据提供的文件信息,这份文档是关于GDB使用和调试的详细手册。手册内容包括GDB的介绍、安装、基本命令使用、调试程序的方法以及GDB的高级功能。本知识内容将覆盖手册中提到的关键知识点。 首先,GDB是GNU Debugger...
GDB 使用 GDB(GNU Debugger)是一款功能强大的程序调试工具,广泛应用于 UNIX/Linux 平台下。本节将详细介绍 GDB 的使用方法和功能。 一、GDB 概述 GDB 是 GNU 开发组织发布的一个强大的 UNIX/Linux 下的程序...
### gdb使用、调试、举例 #### 一、gdb简介及基本操作 GDB(GNU Debugger)是一款功能强大的开源调试工具,广泛应用于Linux系统中,用于调试C、C++等程序语言编写的软件。它可以帮助开发者查找程序中的错误并进行...
以下是对GDB使用的一些关键知识点的详细说明: 1. **安装与启动**:首先,确保你的系统已经安装了GCC编译器,因为GDB是与GCC紧密配合使用的。在终端中输入`gdb`命令即可启动GDB。若未安装,可以通过包管理器(如`...