nginx除錯方法

2021-07-02 04:43:22 字數 2761 閱讀 7290

2015-05-02 wcdj

摘要:除錯

nginx用到的工具有:

securecrt, curl, wget, gdb, cgdb, strace, pstack, addr2line等。

curl -o 

wget 

編譯帶除錯和禁止優化的nginx,編譯後可以通過./nginx -v命令檢視

為了檢視nginx中定義的巨集,需要使用-ggdb3選項

使用-g和-ggdb3編譯後的大小區別

~/lamp/nginx/install/nginx-1.2.0/sbin$ls -rtlh

total 18m

-rwxrwxr-x 1 gerryyang gerryyang 2.6m may 2 18:08 nginx.old

-rwxrwxr-x 1 gerryyang gerryyang 15m may 2 19:06 nginx

通過重新整理所有原始檔的時間戳,間接達到重新編譯出乙個新的nginx,這樣做可以修改configure生成的makefile檔案

find . -name "*.c" | xargs touch

修改nginx配置,設定nginx只啟動乙個worker程序

worker_processes 1;

除錯nginx啟動和後續過程,最簡單的方法是,將master程序和worker程序邏輯全部合在乙個程序裡,修改nginx配置

daemon off;

master_process off;

fork場景的除錯方法,讓gdb跟蹤fork之後的子程序

set follow-fork-mode child

先使用curl測試nginx是否可以正常服務

使用gdb除錯nginx啟動的方法

~/lamp/nginx/install/nginx-1.2.0/sbin$gdb --args ./nginx -c conf/nginx.conf

gnu gdb (gdb) red hat enterprise linux (7.2-50.el6)

license gplv3+: gnu gpl version 3 or later

this is free software: you are free to change and redistribute it.

there is no warranty, to the extent permitted by law. type "show copying"

and "show warranty" for details.

this gdb was configured as "x86_64-redhat-linux-gnu".

for bug reporting instructions, please see:

...reading symbols from /data/home/gerryyang/lamp/nginx/install/nginx-1.2.0/sbin/nginx...done.

(gdb) r

starting program: /data/home/gerryyang/lamp/nginx/install/nginx-1.2.0/sbin/nginx -c conf/nginx.conf

[thread debugging using libthread_db enabled]

使用strace除錯的方法

strace -s1024 -p30946

process 30946 attached - interrupt to quit

epoll_wait(3, 

refer

[1] 

除錯Nginx有感

nginx對外暴露網際網路介面,網際網路能訪問到 nginx又部署在內網環境,所以能連線到真實伺服器。原本nginx 位址直接指向真實伺服器位址 後面需要公升級,位址需要指向採購方的位址。再加入採購方的產品後,nginx反向位址變成了採購方的位址 埠為8092,最後位址 到真實服務位址 在這種配置下...

Nginx 除錯環境配置

從git上clone下來nginx的 修改auto cc conf檔案,ngx compile opt c g3 加上 g3。一般是 g就可以了,g3主要是為了除錯nginx時,可以用gdb展開一些巨集 展開巨集的命令 macro expand 巨集 在nginx目錄下執行 auto configu...

Nginx模組如何除錯

編寫nginx.conf,將nginx設定為單程序除錯模式 code worker processes 1 error log logs error.log debug 記錄除錯日誌 master process off 單程序模式 為了方便使用偵錯程式,可以單程序非daemon方式啟動,使用引數 ...