linuxgdb
㈠ linux下的gdb是个命令,但在linux常用命令列表中找不到
首先,一般的命令其实也都是程序
装在系统路径下的程序的程序名,都可以作为命令直接调用
具体哪些路径是“系统路径”,Linux下可以用$PATH$命令来查看(通常会有多个路径,用冒号隔开)
而gdb其实是gcc/g++编译器的一个附带的调试器
虽然现在主流的Linux发行版中都会自带gcc编译器,当然也会附带这个gdb的调试器
但毕竟它不算是Linux系统的内部组件,所以自然也不能算做Linux的自带命令了
㈡ linux中怎么使用gdb调试进程有dettach
在2.5.60版Linux内核及以后,GDB对使用fork/vfork创建子进程的程序提供了follow-fork-mode选项来支持多进程调试。 follow-fork-mode的用法为: set follow-fork-mode [parentchild] parent: fork之后继续调试父进程,子进程不受影响。 child: fork之后调试子进程,父进程不受影响。 因此如果需要调试子进程,在启动gdb后: (gdb) set follow-fork-mode child并在子进程代码设置断点。 此外还有detach-on-fork参数,指示GDB在fork之后是否断开(detach)某个进程的调试,或者都交由GDB控制: set detach-on-fork [onoff] on: 断开调试follow-fork-mode指定的进程。 off: gdb将控制父进程和子进程。follow-fork-mode指定的进程将被调试,另一个进程置于暂停(suspended)状态。 注意,最好使用GDB 6.6或以上版本,如果你使用的是GDB6.4,就只有follow-fork-mode模式。 follow-fork-mode/detach-on-fork的使用还是比较简单的,但由于其系统内核/gdb版本限制,我们只能在符合要求的系统上才能使用。而且,由于follow-fork-mode的调试必然是从父进程开始的,对于fork多次,以至于出现孙进程或曾孙进程的系统,例如上图3进程系统,调试起来并不方便。 Attach子进程 众所周知,GDB有附着(attach)到正在运行的进程的功能,即attach <pid>命令。因此我们可以利用该命令attach到子进程然后进行调试。 例如我们要调试某个进程RIM_Oracle_Agent.9i,首先得到该进程的pid [root@tivf09 tianq]# ps -efgrep RIM_Oracle_Agent.9i nobody 6722 6721 0 05:57 ? 00:00:00 RIM_Oracle_Agent.9i root 7541 27816 0 06:10 pts/3 00:00:00 grep -i rim_oracle_agent.9i通过pstree可以看到,这是一个三进程系统,oserv是RIM_Oracle_prog的父进程,RIM_Oracle_prog又是RIM_Oracle_Agent.9i的父进程。 [root@tivf09 root]# pstree -H 6722通过 pstree 察看进程 启动GDB,attach到该进程 用 GDB 连接进程 现在就可以调试了。一个新的问题是,子进程一直在运行,attach上去后都不知道运行到哪里了。有没有办法解决呢? 一个办法是,在要调试的子进程初始代码中,比如main函数开始处,加入一段特殊代码,使子进程在某个条件成立时便循环睡眠等待,attach到进程后在该代码段后设上断点,再把成立的条件取消,使代码可以继续执行下去。 至于这段代码所采用的条件,看你的偏好了。比如我们可以检查一个指定的环境变量的值,或者检查一个特定的文件存不存在。以文件为例,其形式可以如下: void debug_wait(char *tag_file) { while(1) { if (tag_file存在) 睡眠一段时间; else break; } }当attach到进程后,在该段代码之后设上断点,再把该文件删除就OK了。当然你也可以采用其他的条件或形式,只要这个条件可以设置/检测即可。 Attach进程方法还是很方便的,它能够应付各种各样复杂的进程系统,比如孙子/曾孙进程,比如守护进程(daemon process),唯一需要的就是加入一小段代码。 GDB wrapper 很多时候,父进程 fork 出子进程,子进程会紧接着调用 exec族函数来执行新的代码。对于这种情况,我们也可以使用gdb wrapper 方法。它的优点是不用添加额外代码。 其基本原理是以gdb调用待执行代码作为一个新的整体来被exec函数执行,使得待执行代码始终处于gdb的控制中,这样我们自然能够调试该子进程代码。 还是上面那个例子,RIM_Oracle_prog fork出子进程后将紧接着执行RIM_Oracle_Agent.9i的二进制代码文件。我们将该文件重命名为RIM_Oracle_Agent.9i.binary,并新建一个名为RIM_Oracle_Agent.9i的shell脚本文件,其内容如下: [root@tivf09 bin]# mv RIM_Oracle_Agent.9i RIM_Oracle_Agent.9i.binary [root@tivf09 bin]# cat RIM_Oracle_Agent.9i #!/bin/sh gdb RIM_Oracle_Agent.binary当fork的子进程执行名为RIM_Oracle_Agent.9i的文件时,gdb会被首先启动,使得要调试的代码处于gdb控制之下。
㈢ linux安装gdb
这个才是gdb,
http://mirror.centos.org/centos/6/os/i386/Packages/gdb-7.2-60.el6.i686.rpm
你看看有没有其他的依赖,自己去 http://mirror.centos.org/centos/6/os/i386/Packages/ 那里下载
linux不能联网,你虚拟机网络配置成NAT方式,应该都可以吧
㈣ linux gdb如何安装
linux gdb安装步骤如下:
1. 首先可以使用命令“ rpm -qa |grep gdb"查询系统中是否安装了gdb软件包,如果安装了,应该显示如下:
[root@localhost~]#rpm-qa|grepgdb
gdbm-1.8.0-26.2.1
gdb-6.8-37.el5
gdbm-devel-1.8.0-26.2.1
2. 如果系统没有安装gdb软件包,需要先准备好gdb对应的软件包,通常在系统光盘Server文件夹下;
3. 使用命令“rpm -ivh gdb-6.8-37.el5.rpm”或者类似的操作回车即可安装;
4. 安装结束后,再使用命令“rpm -qa |grep gdb"查询,如果成功安装了,应该显示如下:
[root@localhost ~]# rpm -qa |grep gdb
gdb-6.8-37.el5
5. 如果安装不成功,检查一下错误信息,有可能是因为少安装了一些关联软件,根据提示安装即可。
㈤ Linux 里面的gdb到底是个什么东西
Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能:
它使你能监视你程序中变量的值.
它使你能设置断点以使程序在指定的代码行上停止执行.
它使你能一行行的执行你的代码.
在命令行上键入 gdb 并按回车键就可以运行 gdb 了, 如果一切正常的话, gdb 将被启动并且你将在屏幕上看到类似的内容:
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "show ing" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.14 (i486-slakware-linux), Copyright 1995 Free Software Foundation, Inc.
(gdb)
当你启动 gdb 后, 你能在命令行上指定很多的选项. 你也可以以下面的方式来运行 gdb :
gdb <fname>
当你用这种方式运行 gdb , 你能直接指定想要调试的程序. 这将告诉gdb 装入名为 fname 的可执行文件. 你也可以用 gdb 去检查一个因程序异常终止而产生的 core 文件, 或者与一个正在运行的程序相连. 你可以参考 gdb 指南页或在命令行上键入 gdb -h 得到一个有关这些选项的说明的简单列表.
㈥ linux gdb如何安装
打开命令终端面板输入:sudo apt-get install gdb 如图所示: 即可安装,如果还是不可以,那就使用下面这种方式安装: 打开终端输入: wget ftp://ftp.gnu.org/gnu/gdb/gdb-7.9.tar.gz 下载完毕后解压 tar -zxvf /gdb-7.9.tar.gz 然后进行安装即可
㈦ 如何查看linux是否安装了gdb
打开命令终端面板输入:sudo apt-get install gdb
如图所示:
即可安装,如果还是不可以,那就使用下面这种方式安装:
打开终端输入: wget ftp://ftp.gnu.org/gnu/gdb/gdb-7.9.tar.gz
下载完毕后解压 tar -zxvf /gdb-7.9.tar.gz 然后进行安装即可
检测安装没有的话使用命令:
apt-get list
㈧ 怎样在linux系统中安装gdb调试工具
我的怎么可以用sudoapt-getinstallgdb,看我的截图:
㈨ linux 如何更新gdb
linuxgdb安装步骤如下:
1. 首先可以使用命令“ rpm -qa |grepgdb"查询系统中是否安装了gdb软件包,如果安装了,应该显示如下:
[root@localhost~]#rpm-qa|grepgdb
gdbm-1.8.0-26.2.1
gdb-6.8-37.el5
gdbm-devel-1.8.0-26.2.1
2. 如果系统没有安装gdb软件包,需要先准备好gdb对应的软件包,通常在系统光盘Server文件夹下;3. 使用命令“rpm -ivh gdb-6.8-37.el5.rpm”或者类似的操作回车即可安装;4. 安装结束后,再使用命令“rpm -qa |grep gdb"查询,如果成功安装了,应该显示如下:[root@localhost ~]# rpm -qa |grep gdbgdb-6.8-37.el55. 如果安装不成功,检查一下错误信息,有可能是因为少安装了一些关联软件,根据提示安装即可。
㈩ linux gdb 交叉编译是什么
一般用于嵌入式开发中。
由于嵌入式环境中的CPU/内存都很小,不能用于编译。PC机的性能都很好,编译起来也很快。
交叉编译的意思就是,在PC上编译,编译出来的程序在嵌入式机器上运行。