bug除錯要根據應用場景和條件,選擇什麼樣子的除錯方式很大程度上不是你想選擇什麼樣的除錯方式,而是還剩下什麼樣子的除錯方式可用。下面就根據不同的場景和條件來總結一下。
目錄:1、gdb除錯或者ide自帶的除錯工具
2、堆疊呼叫
3、日誌列印
4、訊號函式捕捉
5、**靜態檢測cppcheck
6、記憶體洩漏檢測valgrind
7、bugly \ breakpad
--------------------------------------正文---------------------------------------------
1、gdb除錯或者ide自帶工具除錯
最初級,用的最多的除錯方式,適用於便開發邊除錯,無需多言。
2、堆疊呼叫
適用於隱藏比較深的bug,有時除錯模式中意外崩潰,或者程式執行中意外崩潰都可以使用堆疊來檢視崩潰。windows中使用vs可以在崩潰中開啟堆疊,檢視堆疊呼叫關係。
linux端執行中的程式崩潰了,如果需要檢視堆疊,需要coredump檔案,需要將coredump設定開啟。
3、日誌列印
適用於不能除錯,或者事務類的程式。一般用於追蹤程式執行過程或者執行中的資料監控。可以自己寫乙個日誌庫,
當然也有有很多知名的開源日誌庫,例如大名鼎鼎的glog。
4、列印堆疊——訊號函式捕捉
利用訊號鉤子函式,獲取堆疊資訊,然後在日誌中列印:
5、**靜態檢測cppcheck
**寫好編譯過程中輸出資訊會有很多的warning,看似問題不大的warning往往在實際應用場景中會變成定時炸彈。如果選擇用肉眼去修復查詢這些warning在實際的工程中缺乏可行性。
linux 命令列:
windows:
當然還有一些其他工具也非常優秀,這裡給出對比鏈結。
6、記憶體洩漏檢測——valgrind:
7、bugly \ breakpad
breakpad出於google。可以多平台使用。
應用安裝到使用者那裡,什麼應用場景下會出問題,不得而知。單純的日誌有時顯得蒼白無力,幸好有bugly、breakpad這樣的工具可以使用,讓我們在問題發生後能夠有效的分析問題。
最後,如有錯誤,歡迎指正!如有缺漏,歡迎補充!
程式除錯總結
基本上寫程式大部分時間都是在除錯上面,寫 也只是占用一部分時間。量比較大情況下或者一些隱蔽的bug,一般肉眼也很難看出來,所有除錯 是考驗乙個程式設計師的基本功和能力,是區分初級程式設計師和高階程式設計師的重要能力之一。大多數整合開發軟體的除錯方法都是大同小異,入門以vc6.0這個老古董的除錯開始就...
程式除錯方法總結
在應用程式開發和除錯過程中,經常遇到這樣的問題 由於某個變數的值被錯誤地改變,導致程式出錯甚至crash,如果程式執行在多執行緒環境,或者程式邏輯非常複雜,我們想跟蹤這個變數的變化將會非常困難。有沒有辦法能夠在除錯過程中使程式自動在改變變數處斷點呢?這樣我們就能一一檢視該變數值的改變情況,從而發現到...
串列埠程式除錯總結
除錯能否成功一方面在於方法,另外很大程度上取決於個人的經驗。但是在除錯的時候,通常要遵循以下一些原則 1 確定錯誤的性質和位置 分析 思考與錯誤徵兆有關的資訊,避開死胡同。除錯工具只是一種輔助手段,充分利用vc自帶的除錯工具可以幫助思考,但不能代替思考。通常避免使用 試探法,最多只能將它當作最後的手...