Ubuntu/Linux 下 Qt Creator 調試 C++ 程序時,控制台彈出:
ptrace: Operation not permitted
導致斷點無法命中、變量無法監視、調試器掛載失敗。
內核參數 kernel.yama.ptrace_scope 預設為 1(僅允許父進程 ptrace),Qt Creator 作為非父進程調試器被攔截。
sudo gedit /etc/sysctl.d/10-ptrace.conf # 修改或添加: kernel.yama.ptrace_scope = 0 # 保存退出,重啟生效 reboot
| 值 | 策略 |
|---|---|
| 0 | 經典模式:任意進程可 ptrace(需同 UID/CAP_SYS_PTRACE) |
| 1 | 受限模式:僅父進程(默認) |
| 2 | 僅管理員(CAP_SYS_PTRACE) |
| 3 | 完全禁用 |
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope # 立即生效,重啟後失效,適合快速驗證
設為 0 降低了進程隔離防護,僅建議開發機使用。生產/共享環境請保持 1 或配合 prctl(PR_SET_PTRACER, ...) 精確授權。
修改生效後,Qt Creator 調試即可正常斷點、單步、變量檢查。