调试站点主要用JScript编写,用AJAX代码注入

时间:2010-05-03 22:15:25

标签: javascript jquery ajax debugging accordion

我有一个遗留代码需要维护,在尝试理解代码背后的逻辑时,我遇到了很多恼人的问题。

该应用程序主要使用Java Script编写,广泛使用jQuery +不同的插件,尤其是Accordion。它创建了一个类似向导的流程,通过注入远程AJAX请求的结果,在后台下载下一步的客户端代码。它还使用了很多回调并且非常复杂的“按惯例”编程风格(基于某些对象名称即时创建许多事件处理程序 - 例如当前页面名称,当前步骤名称)。

除此之外,代码非常混乱并且没有明显的内部结构 - 函数分散在代码中,文件名不反映代码的业务角色,很多函数和代码片段很可能不是在所有等地使用。

问题:如何处理此代码库,以便使用一套智能调试工具对代码的内部流程进行“逆向工程”排序。

理想情况下,我希望能够附加到正在运行的应用程序并逐步执行代码,打破每个新的函数调用。

此外,能够在应用程序中创建“调用图”会很好(即,为了运行特定的页面逻辑,这个特定的函数调用流程以特定的顺序执行)。

更不用说能够运行覆盖率分析,识别潜在的孤立代码片段。

我想再次强调,仅仅通过查看代码本身就无法理解应用程序的内在逻辑,除非你有很多业余时间和啤酒箱,我很遗憾没有: /(羞耻......)

某种有助于扩展该代码的IDE也很棒,但我目前正在研究使用Visual Studio 2010来完成这项工作的可能性,因为该网站本身是经典ASP和ASP的混合体。 NET(我说 - 带有jQuery的70%Java脚本,30%ASP)。

我显然已经尝试过FireBug,但我无法找到定义断点或步入代码的方法,使用AJAX调用将其“注入”客户端JS(即应用程序通过调用URL来检索代码并将其注入客户端本地代码)。 Venkman调试器也有类似的问题。

任何提示都会受到欢迎。随意提出其他问题。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用"dynaTrace Ajax"创建调用图,但它不是调试器。如果您有权访问该应用程序,则可以使用关键字“debugger”在javascript文件中显式定义断点。当您附加到IE时,Visual Studio理论上会在解决方案资源管理器中显示所有已评估和加载的JavaScript代码。

答案 1 :(得分:0)

我从Chrome的开发人员工具开始,并分析单个活动,以查找设置断点的函数。可以扩展函数以获取其调用堆栈。

这可能会有所帮助,也可能没有帮助,因为完全有可能获得代码 - 呃,独特,我们应该说 - 让我们更有意义。

祝你好运?