follow-fork-mode
在2.5.60版Linux內核及以後,GDB對使用fork/vfork創建子進程的程序提供了follow-fork-mode選項來支持多進程調試。
follow-fork-mode的用法為:
set follow-fork-mode [parent|child]
parent: fork之後繼續調試父進程,子進程不受影響。
child: fork之後調試子進程,父進程不受影響。
因此如果需要調試子進程,在啟動gdb後:
(gdb) set follow-fork-mode child
並在子進程代碼設置斷點。
此外還有detach-on-fork參數,指示GDB在fork之後是否斷開(detach)某個進程的調試,或者都交由GDB控制:
set detach-on-fork [on|off]
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進程系統,調試起來並不方便。
『貳』 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遠程調試如何實現呢
遠程調試環境由宿主機GDB和目標機調試
stub共同構成,兩者通過串口或TCP連接。使用GDB標准遠程串列協議協同工作,實現對目標機上的系統內核和上層應用的監控和調試功能。調試stub
是嵌入式系統中的一段代碼,作為宿主機GDB和目標機調試程序間的一個媒介而存在。就目前而言,嵌入式Linux系統中,主要有三種遠程調試方法,分別適用於不同場合的調試工作:
用ROM Monitor調試目標機程序
用KGDB調試系統內核
用gdbserver調試用戶空間程序。
這三種調試方法的區別主要在於:目標機遠程調試stub的存在形式的不同,而其設計思路和實現方法則是大致相同的,而我們最常用的是調試應用程序,就是採用gdb+gdbserver的方式進行調試。在很多情況下,用戶需要對一個應用程序進行反復調試,特別是復雜的程序,採用GDB方法調試,由於嵌入式系統資源有限性,一般不能直接在目標系統上進行調試,通常采gdb+gdbserver的方式進行調試。Gdbserver在目標系統中運行,gdb則在宿主機上運行。
下載需要用的的軟體包。
一.編譯安裝arm-linux-gdb
<1>#tar jxvf gdb-7.3.tar.bz2
<2>#cd gdb-7.3
<3>#./configure--target=arm-linux --enable-sim --prefix=/usr/local/bin
<4>#make
<5>#make install
二.編譯安裝gdbserver
<1>#cd gdb-7.3/gdb/gdbserver
<2>#./configure --target=arm-linux--host=arm-linux
<3>#make
這樣在gdb-7.3/gdb/gdbserver目錄下就生成了一個gdbserver可執行文件,拷貝到目標開發板上.
三.測試arm-linux-gdb + gdbserver
<1>在超級終端輸入:
#./gdbserver 192.168.100.1:2345 hello
[192.168.100.1為pc機ip地址,2345為監聽埠,hello為待調試程序
這樣在開發板上可以看到如下提示信息:
Process wpa_cli created; pid = 730
Listening on port 2345
表示gdbserver 成功運行等待客戶端的連接信息
<2>在pc機上輸入:
#arm-linux-gdb hello
然後在GDB界面輸入:
#target remote 192.168.100.2:2345
[192.168.100.2為開發板ip地址,2345為開發版監聽埠]
這樣在開發板上可以看到如下提示信息:
Remote debugging from host 192.168.100.1
表示gdbserver成功運行並且建立連接關系,等待客戶端的調試信息。
『肆』 linux gdb調試問題
出現此錯誤的原因主要是gcc4.9生成的調試信息是dawnfs4,而gdb7.0支持的是 dawnfs2
這個問題其實是編譯環境的問題,可以更改gcc和gdb的版本,這需要去尋找合適的版本。當然也可以給gcc增加編譯參數,使其生成dawnfs2調試信息,主要參數為-gdwarf-2 -gstrict-dwarf,做法如下:
在.bashrc中加入alias gcc='gcc -gdwarf-2 -gstrict-dwarf',重啟終端使其生效
這樣gdb可以使用,也不會出現上面的錯誤。
『伍』 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眾多版本之間的區別有哪些
當你真正開始學習Linux操作系統的時候,就會發現Linux有很多的發行版本,從而被搞得一頭霧水,我將通過本篇文章來給大家解釋下Linux各個發行版本的區別都有哪些,希望能對你有幫助,請看下文:
Linux發行版本可以分為兩大類:
1、由商業公司負責維護的發行版本,如非常有名的Red Hat;
2、由社區組織負責維護的發行版本,如Debian、CentOS;
| Red Hat Linux |
成立於1993年,是目前全球最資深的Linux廠商,也是最火熱的Linux品牌,其中紅帽的認證也是更加具有代表性,分為收費版本、免費版、桌面版三種,即Red
Hat Enterprise Linux、CentOS、Fedora Core。
其是目前國內適用人群最多的Linux發行版本,如果在使用過程中遇到問題,可以輕松地向別人請教或者在網上找到相關的手罩答案。
| Ubuntu Linux |
是基於著名的發行版本Debian
Linux發展而來,它的界面非常是人性化,相對更容易上手,另外它對硬體的支持也是非常的全面,是目前最適合做桌面系統使用的Linux發行版本,並且Ubuntu的所有發行版本都是免費提供使用的。
| SuSE Linux |
最開始由德國公司發布,初版本發布於1994年,最初的時候只提供商業版本,直到2004年被Novell收購後才成立OpenSuSE社區並退出了自己的社區版本OpenSUSE,整體來說,其在歐洲使用者較多,在國內也有較多的應用
| Gentoo Linux |
創建並於2002年發布了第一個穩定版本,到目前為止Gentoo依舊採用源碼編譯安裝的方式進行系統的安裝,是所有Linux發型版本裡面安裝過程最為復雜的發行版。
雖然大家都吐槽於Gentoo復雜的安裝過程,但安裝完成後的Gentoo是最便於管理的版本,因為得益如薯兄於採用編譯的方式去安裝系統,在同等配置下Gentoo也是所有發行版本中運行最快的版本。
不過要注意的是,由於編譯軟體需要消耗大量的時間,所以,如果你所有的軟體都由自己編譯,並安裝 KDE
桌面系統等比較大的軟體包,則可能渣襲需要花費很長時間。