情况如下:一个复杂的 Web 应用程序无法运行,并且可能会持续产生不希望的行为。问题的原因尚不清楚。
建议:跟踪所有javascript代码的执行路径。本质上,生成两个可怕的日志,然后可以将其输入到差异算法中,以确定与错误相关的行为开始分歧的位置(因为从应用程序行为中看不出原因,并且理解和获取实际 JS 代码的副本)运行起来很困难,因为必须从 Web 检查器切换和复制出许多页面。困难在于所有页面都与 Perl 代码动态拼接在一起,其中 JS 代码的重要部分仅作为 (动态...)Perl字符串)。
Chrome 中的 Web Inspector 没有我知道的用于记录执行跟踪的选项。基本上我想要的是执行的每一行 JS 的日志,按照它们执行的顺序。鉴于 JS VM 是单线程的,我认为这不是一件难事。问题很简单,现有的面向用户的工具并不是为这么多的核心调试而设计的。如果我们看一下 Dev Tools 中的 Profiler,它显然能够实现我需要的那种检测,但它从根本上设计是为了进行分析而不是跟踪。
我该如何开始呢?有什么方法可以从源代码构建 Chrome,我可以在哪里
- 在 V8 中关闭 JIT?
- 将 V8 评估的每个 javascript 表达式记录到文件中
我对 Chrome 的开发方面的经验为零。因此,欢迎链接到 Chrome/Chromium/Canary 的 dev-builds/branches/versions/distros(有什么区别?)。
在这一点上,使用强大的 js 跟踪来检测浏览器似乎仍然比重新设计有缺陷的应用程序更容易。页面的架构是一场灾难,但功能很复杂,而且几乎可以完全发挥作用。我只需要找到丢失的那一块。
或者,如果此类工具已经存在,我可以使用哪些其他关键字来搜索它们?“代码跟踪”几乎是我唯一能想到的。
我测试了dynaTrace,这是一个令人高兴的巧合,因为我们的应用程序支持 IE(实际上 Chrome 支持刚刚推出 beta 版),但这不会产生文本转储,它基本上会产生一个巨大的Win32 UI 扩展树,这是无法区分的. 这让我非常难过,因为我知道以这种方式显示轨迹的表示是多么困难,但事实证明它几乎完全没用。除了 Web 应用程序的玩具示例之外,谁会上下滚动该树视图并查看其中真正有用的内容?