重要提示:请不要在Google Chrome的DevTools调试器中提供与设置Javascript断点相关的答案。我试图在Chromium开源浏览器的C ++源代码中使用断点,而不是在DevTools调试器中。
我试图让断点在以下模块中运行,这样我就无法捕获由Chromium托管的页面中运行的Javascript代码所产生的XHR请求:
C:\用户\ realsensible \文件\铬\ SRC \ THIRD_PARTY \ WebKit的\源\芯\ XMLHttpRequest的
我在该模块中的几乎所有显着方法上设置断点,但它们永远不会被击中。 PhistucK指出Chrome启动了几个进程,并且执行Javascript引擎的进程很可能与VS启动的主进程不同,从而打败了断点。
为了尝试测试,我在VS之外启动了Chrome.exe。然后我试图依附于每一个" chrome"我在VS附加到进程列表框中看到的进程(我通过在任务管理器中列出" chrome"进程来仔细检查此进程列表)。有5个过程名为" chrome&#34 ;; "主要"它启动了chrome进程和四个子进程。对于每个流程我:
1)附加到VS的一个chrome进程,我的断点在几乎所有重要的XmlHttpRequest方法上都处于活动状态。 2)(重新)加载了一个我知道从Javascript发出许多XHR请求的网页。 3)脱离过程
在所有5次试验中,没有的断点被击中。
注意,我在项目中与Javascript引擎无关的其他模块上设置了断点,并且执行工作。显然它只是与Javascript相关的代码,我无法触发断点。
有谁知道如何在Chromium中为Javascript引擎提供断点?
答案 0 :(得分:3)
在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\
中的代码是Blink,HTML呈现引擎。它包含XHR的实现(以及许多其他内容),并通过名为“bindings”的层使其可用于JavaScript代码。 (对于在渲染器进程中设置断点,这种区别是无关紧要的,因为该过程始终是相同的。)