- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
情况是这样的:一个复杂的网络应用程序无法正常工作,并且可能会持续产生不受欢迎的行为。问题的原因尚不清楚。
建议:追踪所有javascript代码的执行路径。本质上,产生两个巨大的日志,然后可以将其输入 diff 算法以确定与 bug 相关的行为从哪里开始出现分歧(因为从应用程序行为中看不出原因,并且理解和获取实际 JS 代码的副本运行起来很困难,因为必须切换到许多页面并从 Web 检查器中复制出来。困难在于所有页面都是用 Perl 代码动态拼接在一起的,其中 JS 代码的重要部分仅存在(动态...) Perl 字符串)。
据我所知,Chrome 中的 Web Inspector 没有用于记录执行跟踪的选项。基本上我想要的是执行的每一行 JS 的日志,按照它们执行的顺序。鉴于 JS VM 是单线程的,我不认为这是一件很难获得的事情。问题很简单,现有的面向用户的工具并不是为如此多的硬核调试而设计的。如果我们查看 Dev Tools 中的 Profiler,它显然能够提供我需要的那种工具,但它从根本上设计用于执行分析而不是跟踪。
我如何开始使用它?有什么方法可以从源代码构建 Chrome
我对 Chrome 开发方面的经验为零。所以例如欢迎链接到 Chrome/Chromium/Canary 的 dev-builds/branches/versions/distros(有什么区别?)。
此时看来,使用强大的 js 跟踪来检测浏览器仍然可能比重新设计有缺陷的应用程序更容易。页面的架构是一场灾难,但功能很复杂,而且几乎可以正常工作。我只需要找到丢失的那一 block 。
或者,如果此类工具已经存在,我可以使用哪些其他关键字来搜索它们? “代码跟踪”几乎是我唯一能想到的。
我测试了dynaTrace ,这是一个令人愉快的巧合,因为我们的应用程序支持 IE(实际上 Chrome 支持刚刚推出测试版),但这不会产生文本转储,它基本上会产生一个 大量 Win32 UI 扩展树,它是不可能区分的。这让我非常难过,因为我知道以这种方式显示轨迹的表示要困难得多,但事实证明它几乎毫无用处。除了网络应用程序的玩具示例之外,谁会上下滚动该 TreeView 并查看其中真正有用的内容?
最佳答案
如果您正在开发一个大型网络应用程序,那么在其编码部分遵循测试驱动策略总是好的。只需使用一些技巧,您就可以制作一个简单的单元测试脚本(使用 QUnit)来测试应用程序的几乎所有方面。以下是一些潜在的错误和一些解决方法。
让自己成为处理程序来注册长期存在的对象,并让自己成为处理程序以安全的方式关闭它们。如果安全方法没有成功,那么就是对象本身的管理失败了。一个例子是 Backbone 僵尸 View 。 View 在关闭部分中有错误代码,父关闭未 Hook 或发生无限循环。测试所有 View 事件也很好,尽管很乏味。
通过将所有用于数据获取的代码放入某个模块(我经常为我的数据库中的每个表/文档使用一堆 Backbone.Model 对象)和每个使用请求模式的处理程序,您可以测试一个一个地查看它们是否都正确获取和保存。
如果需要复杂的计算,将其抽象为一个函数或模块,以便可以使用已知数据轻松对其进行测试。
如果您的应用程序使用数据绑定(bind),一个好的策略是为所有数据使用一个 JSON 架构,以便根据包含您的绑定(bind)的 View 进行测试。根据架构检查所需的所有数据。这也适用于您的 Backbone.Model。
使用好的 IDE 也有帮助。 PyCharm(如果您使用 Python 作为后端)或 WebStorm 非常适合测试和开发 JavaScript/CoffeeScript。您可以在浏览器内的特定位置断点和研究您的代码!它还会运行您的代码以自动完成,您可以通过这种方式看到一些错误。
我非常鼓励在您的代码中使用模块。虽然没有 JavaScript 官方方法来做它(下一个 ECMAScript 草案有它),你仍然可以使用好的库来实现它。好的是:RequireJS、CommonJS 或 Marionette.Module(如果您使用 Marionette 作为框架)。我认为 Ember/AngularJS 也提供了这种功能,但我没有亲自使用过它们,所以我不确定。
这可能无法立即解决您的问题,而且我认为 (IMO) 也没有简单的解决方案。我的重点是向您展示开发方法,以便在开发阶段轻松发现和解决错误,以及所有这些(取决于您的单元测试)。错误总是会发生,就像我们的程序员 self 希望我们相信相反的那样。希望我有所帮助:)
关于javascript - 跟踪 Web 应用程序中所有 Javascript 的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17752422/
我有一个“有趣”的问题,即以两种不同的方式运行 wine 会导致: $> wine --version /Applications/Wine.app/Contents/Resources/bin/wi
我制作了这个网络抓取工具来获取网页中的表格。我使用 puppeteer (不知道 crontab 有问题)、Python 进行清理并处理数据库的输出 但令我惊讶的是,当我执行它时 */50 * * *
JavaScript 是否被调用或执行取决于什么?准确地说,我有两个函数,它们都以相同的方式调用: [self.mapView stringByEvaluatingJavaScriptFromStri
我目前正在使用 python 做一个机器学习项目(这里是初学者,从头开始学习一切)。 只是想知道 statsmodels 的 OLS 和 scikit 的 PooledOlS 使用我拥有的相同面板数据
在使用集成对象模型 (IOM) 后,我可以执行 SAS 代码并将 SAS 数据集读入 .Net/C# 数据集 here . 只是好奇,使用 .Net 作为 SAS 服务器的客户端与使用 Enterpr
有一些直接的 jQuery 在单击时隐藏打开的 div 未显示,但仍将高度添加到导航中以使其看起来好像要掉下来了。 这个脚本工作正常: $(document).ready(funct
这个问题已经有答案了: How do I compare strings in Java? (23 个回答) 已关闭 4 年前。 这里是 Java 新手,我正在使用 NetBeans 尝试一些简单的代
如果我将它切换到 Python 2.x,它执行 10。这是为什么? 训练逻辑回归模型 import keras.backend as
我有两个脚本,它们包含在 HTML 正文中。在第一个脚本中,我初始化一个 JS 对象,该对象在第二个脚本标记中引用。 ... obj.a = 1000; obj.
每当我运行该方法时,我都会收到一个带有数字的错误 以下是我的代码。 public String getAccount() { String s = "Listing the accounts";
我已经用 do~while(true) 创建了我的菜单;但是每次用户输入一个数字时,它不会运行程序,而是再次显示菜单!你怎么看? //我的主要方法 public static void main(St
执行命令后,如何让IPython通知我?我可以使用铃声/警报还是通过弹出窗口获取它?我正在OS X 10.8.5的iTerm上运行Anaconda。 最佳答案 使用最新版本的iTerm,您可以在she
您好,我刚刚使用菜单栏为 Swing 编写了代码。但是问题出现在运行中。我输入: javac Menu.java java Menu 它没有给出任何错误,但 GUI 没有显示。这是我的源代码以供引用:
我觉得这里缺少明显的东西,但是我看不到它写在任何地方。 我使用Authenticode证书对可执行文件进行签名,但是当我开始学习有关它的更多信息时,我对原样的值(value)提出了质疑。 签名的exe
我正在设计一个应用程序,它使用 DataTables 中的预定义库来创建数据表。我想对数据表执行删除操作,为此应在按钮单击事件上执行 java 脚本。 $(document).ready(functi
我是 Haskell 新手,如果有人愿意帮助我,我会很高兴!我试图让这个程序与 do while 循环一起工作。 第二个 getLine 命令的结果被放入变量 goGlenn 中,如果 goGlenn
我有一个用 swing 实现迷你游戏的程序,在主类中我有一个循环,用于监听游戏 map 中的 boolean 值。使用 while 实现的循环不会执行一条指令,如果它是唯一的一条指令,我不知道为什么。
我正在尝试开发一个连接到 Oracle 数据库并执行函数的 Java 应用程序。如果我在 Eclipse 中运行该应用程序,它可以工作,但是当我尝试在 Windows 命令提示符中运行 .jar 时,
我正在阅读有关 Java 中的 Future 和 javascript 中的 Promises 的内容。下面是我作为示例编写的代码。我的问题是分配给 future 的任务什么时候开始执行? 当如下行创
我有一个常见的情况,您有两个变量(xSpeed 和 ySpeed),当它们低于 minSpeed 时,我想将它们独立设置为零,并在它们都为零时退出。 最有效的方法是什么?目前我有两种方法(方法2更干净
我是一名优秀的程序员,十分优秀!