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上編譯,編譯出來的程序在嵌入式機器上運行。