stw*_*667 5 ruby debugging ruby-on-rails zeus
当使用 ruby debug gem时,我经常看到打印出以下输出:
DEBUGGER: Attaching after process <pid1> fork to child process <pid2>
Run Code Online (Sandbox Code Playgroud)
其中<pid1>
是父进程 ID(如 12345),<pid2>
是新分叉的子进程 ID(如 55555)。
这里发生了什么?它与连接到Spring或Zeus等应用程序预加载器有什么关系吗?
发生的情况是,您的主 Ruby 进程正在分叉一个新进程,并且它告诉您调试器正在附加到新创建的具有进程 id 的子进程<pid2>
,以便它也可以因调试事件而中断。
就我而言,这是在调用visit <url>
自动化测试时发生的,由于有 Capybara Selenium Webdriver,该测试创建了一个新的子进程来启动 Chrome 进程以呈现请求的 HTML。
默认情况下,ruby调试 gem将附加到父进程和子进程。但是您可以使用环境变量进行覆盖,仅激活子级或父级的调试器RUBY_DEBUG_FORK_MODE
。
需要明确的是,它与 Spring 或 Zeus 等应用程序预加载器无关。