大型c 專案在linux下如何除錯

時間 2021-05-07 04:46:26

1樓:潘慶峰

主要靠log,有時候需要pstack+strace(程式掛起或者高cpu的時候),本地除錯有時候用gdb,本地除錯小型程式或者單元測試工具用valgrind,效能測試用valgrind或者gprof,但是大多數時候用pstack先最大的瓶頸就夠了。有coredump的時候用gdb。從來不用xwin。

2樓:高辰飛

打log,gdb,strace,ltrace,pstack,stap指令碼,perf

具體看除錯的程式是不是線上的服務,能不能停,看情況選擇方法

還有我大部分調的是C的,C++調的少

3樓:9chu

1.開發機

方案一: 裝乙個xfce桌面加clion,使用vnc直接開發+除錯方案二: 安裝remote gdb,開放除錯埠,windows上使用clion attach上去(需要自己編譯gdb,此外vscode和vs的remote debug都是殘的)

2.線上環境

直接gdb(僅限 Core Dump)

更多時候看的log來定位問題

4樓:血狼

不是我黑vs,用它來除錯core,真的比不上windbg,windbg有各種命令進行除錯,在除錯範圍可以涉及到核心和使用者態,無論廣度還是深度都甩vs幾條街,還可以寫指令碼半自動化來擴充套件功能。

相對於windbg來說,gdb就差一籌了,解core能力感覺沒區別。記憶體洩露定位,gdb不行,可以寫指令碼擴充套件,windbg有命令。控制代碼洩露,gdb不行,windbg也有命令。

當然,在擴充套件方面,gdb還是比ide要好,你可以嘗試寫python指令碼玩一下。

當然這個回答很多人不服,說我對gdb了解不深,我唯有安利一下自己部落格http://

blog.csdn.net/xuzhina

5樓:巢鵬

看如何定義大型專案咯,來到chromium這個級別的IDE基本都hold不住。vs算勉強能hold住的重開一次要半小時以上。GDB也hold不住開一次也要十幾分鐘。

幸好編譯快,所以除錯只能靠log和trace了。

6樓:張杰

用gdb 除錯,絕對沒有你想像的那麼難用。

大系統一般會備有完善的LOG系統和動態調節的配置。這足以應對一般的邏輯問題了。我們用的是 log4cplus/log4cplus · GitHub。

上面有人說,emacs + gdb ,的確非常 nice。恰好我是用 Emacs 做開發。如下圖:

基本上和IDE差不了多少了。但是,我很少用,因為太慢了,扛不住。

以前我用 VS2010 做開發,今年轉到伺服器開發。剛做的時候感覺不適應,後來慢慢就習慣了。不管是你說的大專案還是一般的專案(大專案也是有小模組堆積而成),平時用的基本上不會特別複雜,最多也不過執行緒堆疊切換而已。

7樓:類庫

自從硬體配置hold不住大程式以來,我已經用windbg代替VS除錯幾年了,然後跑到linux下用gdb除錯感覺跨度也小了很多。

8樓:陶百百

弱弱的問一句為什麼要用IDE除錯? 大型網路專案,幾十個廠家合作,我們的方法是gdb,core檔案,tcpdump,valgrind,vim+各種正規表示式+完善的log,依靠這些工具除錯完全能hold住啊,想想這個專案用IDE還是挺奇怪的啊。。還是不懂為什麼要用IDE。。

沒用過IDE除錯大型專案,求解釋。。

可能我的回答產生了歧義,我只是針對樓主的問題,條件反射的利用反問來諷刺下。。

其實我支援在特定場景下使用最適合的工具去開發。。

9樓:杜鵬霄

原來在一家公司做信令閘道器,軟交換的,基本框架和 sipX 很類似,算是大型 C++ 專案了。開發的話,有 IDE,kdeveloper 還是可以的,用不習慣的使用 vim 一樣的高效。除錯的話,使用 unittest,另外是 gdb,gdb 的很多高階邪門兒用法就是那個時候玩兒出來的。

記憶體分析用 valgrind。網路抓包用 etheral,現在叫 wireshark,再不行就 tcpdump。linux 下視覺化工具不多,但是雜七雜八的工具多,吐啊吐啊就習慣了。

10樓:

一般小問題用gdb, 大問題就裝乙個DDD之類的front end,和VS是沒得比,一般情況下也夠用了

以及樓上說用日誌的說明你們那些專案都是小專案

11樓:Hao Lee

紅帽工程師開發的insight好像不更新了,我就把DDD裝上了。正好最近要寫個詞法分析器,雖然不是大專案,但也正好用用makefile和DDD。另外,還有個叫kdbg,不過我沒裝kde環境,所以沒用它。

好像還有個叫xxgdb,當然還有其他的。

12樓:「已登出」

Linux上最好的IDE是Eclipse,雖然不如VS,但也很方便了。

你去網上搜搜如何在Linux下用Eclipse開發C++。

13樓:魯哈花

linux上的除錯比不上windows上那麼方便(不說功能是否強大,便利性是肯定有差距的)

好在有萬能的日誌手段來除錯

win下的dbgview很好用,linux上就只好打在命令列上了。太不方便了於是我做了乙個linux上遠端將除錯資訊輸出到win端的庫。。

在大型專案上,JavaScript 是個爛語言嗎?

不是,你告訴我多大的專案叫大型,幾千萬 dau幾十個元件的專案照樣用js,而且跑了幾年無任何線上大故障出現,故障都沒幾個,頂多算小bug。而且即沒上ts也沒寫單測照樣穩定執行。你說它有缺點我認,你說它寫不了大型專案我當你在放屁 pochiko 如果寫js不帶限制 毫無章法可言的話確實很爛。如果對於呼...

STL多執行緒在linux環境下效能急劇下降,求解答?

用排除法 1 先排除多執行緒的問題。方法 在兩台機器上分別用單執行緒測試。2 排除檔案讀寫問題。方法 將taskThread裡面的任務替換成其它的純計算純記憶體操作。 egmkang wang 為什麼C getline讀取速度比C readline讀取速度慢這麼多?如何提高?egmkang wang...

Linux 下做 C 後台開發(不開發UI),哪些 IDE 比較靠譜?

windows 下用終端模擬器 ssh到開發機 vim開發。網速好的話 x11 forward 用emacs。實屬不得已。環境要求太苛刻了。而且公司配開發機效能還不錯。編譯速度挺快的。 如果是直接在linux上寫,qtcreator很不錯,如果是用windows,可以用netbeans,遠端編譯除錯...