【发布时间】:2018-01-09 03:44:51
【问题描述】:
重要提示:请不要给出与在 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”的进程; “主” chrome 进程和它启动的四个子进程。对于每个过程我:
1) 附加到来自 VS 的 chrome 进程之一,我的断点在几乎所有重要的 XmlHttpRequest 方法上都处于活动状态。 2)(重新)加载了一个网页,我知道该网页从 Javascript 发出许多 XHR 请求。 3) 脱离进程
在所有 5 次试验中,没有个断点被命中。
注意,我在项目中与 Javascript 引擎无关的其他模块上设置了断点,它们确实工作。显然这只是我无法触发断点的 Javascript 相关代码。
有谁知道如何在 Chromium 中为 Javascript 引擎设置断点?
【问题讨论】:
-
“断点”是什么意思?您是否在运行 chromium 实例时编辑 chromium 源文件? “为了尝试测试,我启动了 Chrome.exe” 问题与铬或铬有关吗?如果您正在启动“Chrome.exe”,为什么问题会被标记为
chromium?你想达到什么目的? -
注意 Chrome 和 Chromium 是两种不同的浏览器 What Is The Difference Between Google Chrome And Chromium Browser?
-
@guest271314 - 我正在使用位于此位置的 Chromium 开源浏览器的源代码:chromium.org/developers/how-tos/get-the-code 我在源代码中设置了断点,但我没有更改源代码。 Chromium 整体解决方案中浏览器项目的默认可执行文件名称是 chrome.exe。
-
“我在源代码中设置了断点,并没有更改源代码。” 没有收集你的意思?您能否将您在问题中调整的代码包含在内?
-
你的意思是你修改了cs.chromium.org/chromium/src/third_party/WebKit/Source/core/…目录下的文件?
标签: c++ visual-studio breakpoints chromium v8