2014-09-29 00:20:16| 分類:技術(shù)研究 | 標(biāo)簽:linux 調(diào)試 可視化 c/c++ vgdb |舉報|字號 訂閱

下載LOFTER我的照片書 | 在Linux下怎樣調(diào)試C/C++程序?做過Linux開發(fā)的人都知道用gdb。我見過很多Linux開發(fā)人員,包括很多有多年工作經(jīng)驗的老鳥,都還是在gdb命令行下兢兢業(yè)業(yè)的敲著命令,用list來看代碼或是在Windows上開一個Source insight來看代碼。這里我分享一些Linux下如何使用可視化調(diào)試來提高效率的經(jīng)驗,希望能對大家有所幫助。1. gdb的TUI模式。進(jìn)gdb后,按Ctrl-X A,看到什么了?是的,有窗口了,里面還能顯示代碼呢。(在Linux下大多可用,在Windows上的gdb一般沒這功能。)這回看代碼舒服多了是不是,去google搜搜看文檔吧。2. emacs+gdb。搜搜看emacs和gdb的作者你就知道這兩個軟件關(guān)系非同一般了。只要會用emacs會用gdb,剩下就不是問題了。關(guān)鍵是emacs可不是容易用的慣的。3. vi+gdb。段子里一直流傳著,Linux下的編輯器,分為emacs, vi和其它三類。雖然vi本身沒提供直接集成gdb的功能,但有不少vi插件試圖做到易用的集成,聽過的有vgdb,pyclewn,VimDebug等。 這回主要介紹下vgdb。它的特點是以微軟Visutal Studio中的Visual C++作為榜樣,非常方便有VC調(diào)試經(jīng)驗的人上手。不僅缺省的快捷鍵是VC風(fēng)格的(比如F9斷點,F(xiàn)5運行,F(xiàn)10單步等),而且引入了不少VC中的概念和操作方便用戶操作,比如Run To Cursor (Ctrl-F10) - 運行到光標(biāo)所在行(用gdb要設(shè)置臨時斷點再運行過去);開始調(diào)試(F5)(如果用gdb,一開始用run命令開始調(diào)試,中間要用cont命令繼續(xù)執(zhí)行,vgdb把這些細(xì)節(jié)都在后臺幫助你處理掉啦);Set Next Statement - 把當(dāng)前執(zhí)行位置拖到另一行上,甚至允許跨函數(shù)拖執(zhí)行點而程序不崩潰;再比如VC中查看復(fù)雜對象,允許用戶自定義查看規(guī)則的AutoExpand機制也被vgdb引入進(jìn)來,這尤其適合大項目中查看復(fù)雜的數(shù)據(jù)類型。 在vim的script列表里可以找到vgdb: http://www.vim.org/scripts/script.php?script_id=4456對于沒有Linux下調(diào)試經(jīng)驗的人來說,使用vgdb,即使不會gdb和vi的操作,也能很快上手調(diào)試起來。下載的包里帶有視頻演示,這里先給個截圖看看:
vgdb的另一個亮點是對變量指針的分析(Drill down)。比如你用PRint查看一個變量,發(fā)現(xiàn)原來是個指針,一般地你會再輸入print *v來查看它的結(jié)構(gòu),而在vgdb窗口里,你直接在顯示指針值的那行上回車,就能跟蹤打印里結(jié)構(gòu)的內(nèi)容。如果結(jié)構(gòu)中還有指針,仍可以方便的在這行上回車查看一個指針成員的內(nèi)容。新聞熱點
疑難解答
圖片精選