對(duì)于多進(jìn)程架構(gòu)的程序帐萎,如服務(wù)器程序nginx和php-fpm等表悬,調(diào)試子進(jìn)程需要用到調(diào)試器的attach功能。
下面以Clion和php-fpm為例奔害,調(diào)試步驟如下楷兽,其他編輯器/IDE和程序可以作為參考:
- 首先,需要將程序的worker子進(jìn)程數(shù)量調(diào)成固定的1個(gè)华临,以便請(qǐng)求/任務(wù)被調(diào)度到固定的進(jìn)程芯杀,php-fpm的調(diào)整如下:
# File: etc/php-fpm.d/www.conf
pm = static
pm.max_children = 1
- 設(shè)置內(nèi)核參數(shù):
sudo sysctl kernel.yama.ptrace_scope=0
若不設(shè)置這個(gè)參數(shù)會(huì)有以下的報(bào)錯(cuò):
com.jetbrains.cidr.execution.debugger.backend.gdb.GDBDriver$GDBCommandException: ptrace: 不允許的操作.
Debugger detached
- 啟動(dòng)程序,最好使用本用戶來啟動(dòng):
- 點(diǎn)擊Clion的菜單"Run -> Attach to Process"雅潭,或者使用快捷鍵Ctrl+Alt+5揭厚,來啟動(dòng)Attach界面,篩選進(jìn)程名字扶供,選擇子進(jìn)程:
- 在Clion上打上調(diào)試斷點(diǎn)筛圆,然后用Postman等工具做請(qǐng)求,就可以看到調(diào)試器進(jìn)入到相應(yīng)的位置了: