Debugging 如何在浏览器中调试Dojo?

Debugging 如何在浏览器中调试Dojo?,debugging,dojo,ibm-mobilefirst,dojox.mobile,Debugging,Dojo,Ibm Mobilefirst,Dojox.mobile,我目前正在(尝试)使用Worklight Studio 5.0.6和Dojo(Mobile)1.8.3开发一个应用程序。我很难找到合适的调试方法。在服务器上等待构建部署过程5-10分钟后,Chrome调试器中的错误通常如下所示: 我应该如何在我的源代码中找到这个错误?整个堆栈跟踪完全由Dojo代码组成,它在20个抽象层之后生成了一条毫无用处的错误消息 说真的,你们在现实生活中是怎么处理的?您使用什么方法在浏览器中调试Dojo驱动的应用程序 spyro对于dojo.parse错误,我发现在所有异

我目前正在(尝试)使用Worklight Studio 5.0.6和Dojo(Mobile)1.8.3开发一个应用程序。我很难找到合适的调试方法。在服务器上等待构建部署过程5-10分钟后,Chrome调试器中的错误通常如下所示:

我应该如何在我的源代码中找到这个错误?整个堆栈跟踪完全由Dojo代码组成,它在20个抽象层之后生成了一条毫无用处的错误消息

说真的,你们在现实生活中是怎么处理的?您使用什么方法在浏览器中调试Dojo驱动的应用程序


spyro

对于dojo.parse错误,我发现在所有异常(屏幕截图上的紫色图标应为蓝色)上暂停Chrome调试器非常有用。在引发的第一个异常中,通常会获得有关错误原因、正在解析的DOM节点的名称等的更多详细信息


Rémi.

调试基于dojo的应用程序应该与调试任何javascript应用程序相同

通常我会遵循以下步骤:

  • 将console.log()添加到代码中的某个地方:这很快,大多数情况下已经足够了

  • 在调试器中设置断点:如果步骤1还不够,您可以根据错误信息在错误行之前设置断点,然后单步执行或单步执行

  • 注释掉最近的更改:对于一些很难找到错误行的错误,例如,解析案例中的错误,最好的方法是逐个注释掉最近的更改,直到返回到上一个工作版本。或者,返回到上一个工作版本,然后逐个添加代码

  • 创建一个简单的应用程序来重现错误:如果您的应用程序非常复杂,并且您很难遵循上述方法,您可以尝试创建一个新的应用程序,该应用程序模仿您当前的应用程序,但逻辑简单,并尝试重现错误

  • 基于经验:一些错误,例如,在chrome和firefox上运行的数组末尾的额外“,”将在IE上报告无意义的错误信息。调试此类错误非常困难,您可以根据经验或进行谷歌搜索


  • 在这种情况下,我通常会在错误回调中放置一个断点(在本例中是第3398行),然后查看错误变量(“e”)

    我不确定您对Web检查器有多熟悉,但一旦您点击断点,打开Web检查器的“控制台”,检查错误属性“e.message”和“e.stack”(只需在控制台中键入“e.message”)。 此外,在开发过程中,最好避免Dojo优化/缩小,这将大大提高您的调试能力


    底线是在抛出错误之前尝试放置断点。

    您是否在dojoConfig中提供了
    isDebug:true
    ?另外,试着看看在其他浏览器中是否也会发生同样的情况


    更新:我最近发现Google Chrome和Dojo调试存在问题,我认为这与文件的异步加载有关。正如您在所提供的@spyro屏幕截图中所看到的,
    ReferenceError
    对象为空(您可以注意到,因为括号是空的
    {}
    )。如果你想解决这个问题,可以重新打开谷歌Chrome的控制台(例如点击两次
    F12
    )。重新打开
    ReferenceError
    后,该对象不应再为空,现在您可以使用该对象旁边的箭头展开该对象,并获得有关失败原因的更详细信息。

    谢谢您的回答,但所有这些对于Dojo来说都不是特别的,因为它广泛使用回调和异步AMD代码,您根本不知道是什么导致了错误(因为您的“类”不是堆栈跟踪的一部分)。由于缺少所有要求,甚至无法从javascript控制台操纵页面。您是否在
    dojoConfig
    中提供了
    isDebug:true
    ?另外,试着看看在其他浏览器中是否也会发生同样的情况。我不知道为什么,但有时其他浏览器会向我提供更多信息。