有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试。这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程只能在系统启动时运行。另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式。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运行在调试机上,通过gdbserver与目标机上的进程通信,遵循gdb远程串行协议(Remote Serial Protocol, RSP)。 在调试过程中,信号扮演了关键角色。当使用ptrace建立调试关系后,gdb可以拦截所有...
本文将基于给定的"GDB--gdb调试.pdf"文件内容,深入解析GDB的基本概念、使用方法及高级功能,帮助读者快速掌握GDB调试技巧。 ### GDB概览 GDB是GNU项目的一部分,由Richard Stallman、Roland Pesch、Stan Shebs等...
- 使用`quit`命令退出gdb环境,如果当前程序正在运行,则会先将其终止。 #### 命令行交互 - **命令语法**:大多数gdb命令可以直接输入,如`break`、`continue`等。部分命令需要参数,可以通过空格分隔的方式提供...
GDB 调试工具在 X86 环境下的使用方法 在 X86 环境下,GDB 是一个强大的调试工具,主要用于调试 C/C++ 程序。要使用 GDB,需要在编译时添加调试信息,以便在调试时可以查看函数名、变量名等信息。 GDB 的主要功能...
GDB手册还包含了大量关于如何使用各种调试技巧和方法的细节,这些技巧和方法是解决复杂软件问题不可或缺的工具。因此,无论是对于新手还是有经验的开发者来说,这份手册都是学习和提升GDB使用技能的重要资源。 需要...
通过一个具体的示例来深入理解GDB的使用方法。以下是对一个简单的C语言程序进行调试的过程: ```c #include int func(int n) { int sum = 0, i; for (i = 0; i ; i++) { sum += i; } return sum; } int main...
本文将详细介绍gdb的使用方法及技巧,帮助读者更好地掌握这一工具。 #### 二、gdb的基本使用 ##### 2.1 调用GDB - **启动gdb**:在命令行中输入`gdb`后跟调试的目标程序路径即可启动gdb。例如: ```bash gdb ...
### GDB调试器及调试方法 #### GDB简介 ...熟练掌握GDB的使用方法对于任何从事Linux开发工作的人员来说都是非常重要的。通过不断地实践和探索,开发者可以更加有效地利用GDB来提升自己的编程技能。
**命令解释**:向正在运行的进程发送一个信号。这对于模拟某些特殊情况(如处理中断信号)非常有用。 ##### 5. `step` **命令解释**:执行下一行源代码。如果遇到函数调用,则会进入函数内部逐行执行,直至函数返回...
### Linux下gdb调试工具指南:深入解析与实践 #### 引言 在软件开发领域,尤其是...通过本文的详细介绍,我们不仅了解了GDB的基本使用方法,还探索了其高级功能和实战技巧,希望这能成为你软件调试旅途中的有力助手。
GDB官方文档通常会介绍其使用的命令、调试会话的流程、程序运行控制、数据观察和修改、以及多线程和多进程程序的调试方法。 在官方文档中,您会发现GDB调试的概览,包含了一些自由软件的概念,以及如何进行GDB会话...
1. 启动一个新的调试进程:通过程序名和内存转储文件启动GDB,然后执行run命令运行程序。 2. attach调试已运行进程:确定进程ID后,通过`gdb attach pid`命令附加到进程中进行调试。 3. 远程调试:调试目标机器上的...
- 启动并附加到一个正在运行的服务程序: `gdb <program> <PID>` - 使用core dump文件进行调试: `gdb <program> core` #### 四、GDB与图形化调试器的对比 - **命令行VS图形界面**: - GDB的优点在于其强大的...
- **调试已运行的进程**:GDB不仅可以调试新启动的进程,还可以附着到已运行的进程上进行调试,这在追踪运行时错误时尤为有用。 - **多线程与多进程调试**:随着现代程序的复杂度增加,多线程和多进程编程变得...
对于初学者而言,掌握GDB的基本命令和使用方法是非常重要的。 #### 二、GDB的主要功能 GDB主要帮助用户完成以下四个方面的功能: 1. **启动程序并控制其运行**:用户可以根据需求设定程序的启动参数以及运行条件,...
本文主要介绍GDB的基础使用方法,包括启动程序、设置断点、查看程序状态以及单步执行等关键功能。 1. **启动与运行程序** GDB允许程序员按照自定义的方式启动和控制程序的执行。在程序运行过程中,可以设置断点,...
再来看《gdb_guide(中文).pdf》,这是一本中文版的GDB使用指南,对于中文阅读者来说,能更直观地理解GDB的使用方法。它可能会包含GDB的最新特性和高级功能,比如动态类型检查、调用堆栈回溯、数据观察点等。 最后,...
需要注意的是,这种方法的局限性在于,它只能调试一个进程(父进程或子进程),如果存在孙进程,GDB将无法调试。为了解决这个问题,开发者需要在`fork()`函数前设置`follow-fork-mode`和`detach-on-fork`,并可能...
《GDB完全手册》是为Linux开发者准备的一份详尽指南,主要介绍的是GDB(GNU调试器),这是一个强大的开源调试工具,用于帮助程序员在Linux环境下调试C、C++和其他支持的语言编写的程序。通过GDB,开发者可以定位并...