透過調試,可以方便地定位問題,解決bug.
本文主要總結書裡提到的內容,具體細節,會慢慢更新,因為細節是在慢慢閱讀中經歷的.
跟踪與調試,主要分了6個部分:
1. 利用GDB調試:
具體調試方法可以參考: Nginx學習之十四-GDB調試Nginx初試 ,以及的作者的博客:點擊打開鏈接
其實,透過上一節的方法,可以很方便的透過eclipse來調試程式碼,當然gdb透過命令列更加的靈活.
帶參數,進入gdb調試:
gdb --args ./nginx -c /home/zy/code/web/nginx-1.6.2/conf/nginx.conf進去之後,就是打斷點/單步調試/設定觀察點等具體調試技術了.
2. 利用日誌資訊追蹤Nginx:
我們知道printf是小型程式的列印功能函數,但是當程式大型之後,printf就不那麼靈活了. 因此大型的系統都會提供不同等級的輸出控制. 例如linux核心/NS3網路模擬工具等等.在設定檔中設定日誌資訊的目錄和等級.然後在程式裡呼叫ngx_log_xxx()系列函數就可以了.
3 . 利用strace/pstack調試程序:
透過這兩個命令可以查看應用程式在運行過程中所發起的系統函數調用和動態庫函數調用. 然後,pstack本身也就是一個利用gdb實現的shell腳本.
4.加樁調試:
一個單元測試的概念,比如我們寫某個算法實現了一個函數,為了驗證它的正確性,就需要在main函數裡構造輸出並打印輸出這些,這些額外的測試程式碼就是加樁測試.並且eclipse中也可以進行加樁測試:點擊打開鏈接
5. 特殊應用程序測試:
自己寫socket通信的客戶端去測試某些只有在特定情況下才會執行到的程式碼
以上就介紹了 nginx的追蹤與調試,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。