无法在工作的 XmlHttpRequest 模块上获取断点(Javascript engine/XHR 请求)
Can't get breakpoints on XmlHttpRequest module working (Javascript engine/XHR requests)
重要提示:请不要在 Google Chrome 的 DevTools 调试器中给出与设置 Javascript 断点相关的答案。我试图让断点在 Chromium 开源浏览器的 C++ 源代码中工作,而不是在 DevTools 调试器中工作。
我试图让断点在以下模块中工作,因此我无法在 Chromium 托管的页面中捕获由 Javascript 代码 运行 发出的 XHR 请求:
C:\Users\realsensible\Documents\chromium\src\third_party\WebKit\Source\core\xmlhttprequest
我几乎在该模块中的每个重要方法上都设置了断点,但它们从未被命中。 PhistucK 指出 Chrome 启动了多个进程,执行 Javascript 引擎的进程很可能与 VS 启动的主进程不是同一个进程,从而打断了断点。
为了尝试测试这个,我在 VS 之外启动了 Chrome.exe。然后我尝试附加到我在 VS 附加到进程列表框中看到的每个 "chrome" 进程(我通过在任务管理器中列出 "chrome" 进程来仔细检查这个进程列表)。有 5 个名为 "chrome" 的进程; "main" chrome 进程及其启动的四个子进程。对于每个进程我:
1) 附加到来自 VS 的 chrome 进程之一,我的断点在几乎所有重要的 XmlHttpRequest 方法上都处于活动状态。
2) (重新) 加载了一个网页,我知道它从 Javascript 发出了许多 XHR 请求。
3) 脱离进程
在所有 5 次试验中,none 的断点都被击中。
请注意,我在项目中与 Javascript 引擎无关的其他模块上设置了断点,它们 执行 工作。显然这只是 Javascript 相关代码,我无法触发断点。
有谁知道如何在 Chromium 中为 Javascript 引擎设置断点?
在 Windows 上调试 Chromium 的官方说明以及专门用于在渲染器进程中设置断点的说明位于此处:https://www.chromium.org/developers/how-tos/debugging-on-windows#TOC-Multi-process-issues。
您尝试过哪些步骤?
另外,澄清一下:JavaScript 引擎是 V8,它在 <chromium>\src\v8
中。它对 XMLHttpRequest
一无所知,因为那不是 ECMAScript 的特性。 <chromium>\src\third_party\WebKit\
中的代码是 HTML 渲染引擎 Blink。它包含 XHR 的实现(以及许多其他内容),并通过名为 "bindings" 的层使其可用于 JavaScript 代码。 (对于在渲染器进程中设置断点,这种区别无关紧要,因为过程始终相同。)
重要提示:请不要在 Google Chrome 的 DevTools 调试器中给出与设置 Javascript 断点相关的答案。我试图让断点在 Chromium 开源浏览器的 C++ 源代码中工作,而不是在 DevTools 调试器中工作。
我试图让断点在以下模块中工作,因此我无法在 Chromium 托管的页面中捕获由 Javascript 代码 运行 发出的 XHR 请求:
C:\Users\realsensible\Documents\chromium\src\third_party\WebKit\Source\core\xmlhttprequest
我几乎在该模块中的每个重要方法上都设置了断点,但它们从未被命中。 PhistucK 指出 Chrome 启动了多个进程,执行 Javascript 引擎的进程很可能与 VS 启动的主进程不是同一个进程,从而打断了断点。
为了尝试测试这个,我在 VS 之外启动了 Chrome.exe。然后我尝试附加到我在 VS 附加到进程列表框中看到的每个 "chrome" 进程(我通过在任务管理器中列出 "chrome" 进程来仔细检查这个进程列表)。有 5 个名为 "chrome" 的进程; "main" chrome 进程及其启动的四个子进程。对于每个进程我:
1) 附加到来自 VS 的 chrome 进程之一,我的断点在几乎所有重要的 XmlHttpRequest 方法上都处于活动状态。 2) (重新) 加载了一个网页,我知道它从 Javascript 发出了许多 XHR 请求。 3) 脱离进程
在所有 5 次试验中,none 的断点都被击中。
请注意,我在项目中与 Javascript 引擎无关的其他模块上设置了断点,它们 执行 工作。显然这只是 Javascript 相关代码,我无法触发断点。
有谁知道如何在 Chromium 中为 Javascript 引擎设置断点?
在 Windows 上调试 Chromium 的官方说明以及专门用于在渲染器进程中设置断点的说明位于此处:https://www.chromium.org/developers/how-tos/debugging-on-windows#TOC-Multi-process-issues。 您尝试过哪些步骤?
另外,澄清一下:JavaScript 引擎是 V8,它在 <chromium>\src\v8
中。它对 XMLHttpRequest
一无所知,因为那不是 ECMAScript 的特性。 <chromium>\src\third_party\WebKit\
中的代码是 HTML 渲染引擎 Blink。它包含 XHR 的实现(以及许多其他内容),并通过名为 "bindings" 的层使其可用于 JavaScript 代码。 (对于在渲染器进程中设置断点,这种区别无关紧要,因为过程始终相同。)