调试器:在进程 <pid1> 后附加到子进程 <pid2>
DEBUGGER: Attaching after process <pid1> fork to child process <pid2>
在使用rubydebug gem时,我经常看到打印出如下输出:
DEBUGGER: Attaching after process <pid1> fork to child process <pid2>
其中 <pid1>
是父进程 ID,如 12345,<pid2>
是新分叉的子进程 ID,如 55555。
发生的事情是您的 Ruby 主进程正在分叉一个新进程,它告诉您调试器正在附加到进程 ID <pid2>
的 newly-created 子进程, 这样它也可以因调试事件而中断。
在我的例子中,这是在自动测试中调用 visit <url>
时发生的,由于有 Capybara Selenium webdriver,创建了一个新的子进程来启动 Chrome 进程来渲染请求的 HTML.
默认情况下,ruby debug gem 将附加到 父进程和子进程。但是您可以通过使用 RUBY_DEBUG_FORK_MODE
环境变量来重写以仅为子或父激活调试器。
明确地说,它与 Spring 或 Zeus 等应用程序预加载器无关。
在使用rubydebug gem时,我经常看到打印出如下输出:
DEBUGGER: Attaching after process <pid1> fork to child process <pid2>
其中 <pid1>
是父进程 ID,如 12345,<pid2>
是新分叉的子进程 ID,如 55555。
发生的事情是您的 Ruby 主进程正在分叉一个新进程,它告诉您调试器正在附加到进程 ID <pid2>
的 newly-created 子进程, 这样它也可以因调试事件而中断。
在我的例子中,这是在自动测试中调用 visit <url>
时发生的,由于有 Capybara Selenium webdriver,创建了一个新的子进程来启动 Chrome 进程来渲染请求的 HTML.
默认情况下,ruby debug gem 将附加到 父进程和子进程。但是您可以通过使用 RUBY_DEBUG_FORK_MODE
环境变量来重写以仅为子或父激活调试器。
明确地说,它与 Spring 或 Zeus 等应用程序预加载器无关。