使用调试器的attach功能调试多进程架构的程序

对于多进程架构的程序,如服务器程序nginx和php-fpm等,调试子进程需要用到调试器的attach功能。

下面以Clion和php-fpm为例,调试步骤如下,其他编辑器/IDE和程序可以作为参考:

  1. 首先,需要将程序的worker子进程数量调成固定的1个,以便请求/任务被调度到固定的进程,php-fpm的调整如下:
# File: etc/php-fpm.d/www.conf
pm = static
pm.max_children = 1
  1. 设置内核参数:
sudo sysctl kernel.yama.ptrace_scope=0

若不设置这个参数会有以下的报错:

com.jetbrains.cidr.execution.debugger.backend.gdb.GDBDriver$GDBCommandException: ptrace: 不允许的操作.
Debugger detached

  1. 启动程序,最好使用本用户来启动:
php-fpm启动
  1. 点击Clion的菜单"Run -> Attach to Process",或者使用快捷键Ctrl+Alt+5,来启动Attach界面,筛选进程名字,选择子进程:
Attach界面
  1. 在Clion上打上调试断点,然后用Postman等工具做请求,就可以看到调试器进入到相应的位置了:
调试
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容