【问题标题】:How to get firebug to break on exception?如何让萤火虫打破异常?
【发布时间】:2010-09-20 19:04:31
【问题描述】:

我使用的是 Firebug 1.5.4。当我引用一个未定义的变量或类似的变量时,它会在问题发生的地方中断,并让我进入调试视图,在那里我可以看到堆栈并检查变量。

但是,当我抛出自己的异常时,它只会将我带到控制台并打印出“未捕获的异常:废话”。我希望它打破并让我检查变量。我怎样才能告诉 Firebug 这样做?

【问题讨论】:

  • 那对你有用吗?更多问题?

标签: firebug


【解决方案1】:

安装 Firebug 1.6b1 http://getfirebug.com/releases/firebug/1.6X,Firebug > Console > "the exception" 点击左栏中的断点选择器。运行你的代码。 Firebug 在该行中断。

或 Firebug > 控制台 > [||] 在下一个错误时中断

【讨论】:

  • 如果异常只在非常常用的代码行上很少发生,那么很快就会很烦人。
  • 在 Firebug 1.7 中它被命名为 Track Throw/Catch
【解决方案2】:

受访者很有帮助,但忽略了我缺少的一些非常关键的东西; window.onerror 事件。完整代码如下:

 window.onerror = function(msg) {
   debugger;
 }

【讨论】:

  • 这似乎并没有给我一个有用的堆栈跟踪。我的堆栈只显示 onerror() 调用,而不是发生异常的代码。
  • 试试这个:var arg = arguments[4]; s.stack;这是你在 window.onerror 中仍然断点的时候
【解决方案3】:

调用Web Developer Debugger(Tools => Web Developer => Debugger or Ctrl + Shift + S),点击齿轮图标并勾选“Pause on exception”:

或者在Web Developer Console中执行debugger;

官方Web Developer Debugger 文档:https://developer.mozilla.org/en-US/docs/Tools/Debugger

【讨论】:

    【解决方案4】:

    在代码中添加debugger; 语句或使用firebug 的Script 选项卡单击行号(插入断点)。

    如果您只想在抛出异常时这样做,您可以将调试器语句放在 catch 块中。

    【讨论】:

    • 在这种情况下使用断点是不可行的,因为异常可能要到代码的第 100 次才会发生,我不想单步执行 100 次。我只在发生异常时感兴趣。但是请告诉我更多关于这个“调试器”的信息;东西...
    • 好的,所以当您在 catch 块中捕获异常时,但 debugger; 在那里(或在萤火虫中插入断点)。这样你只会在异常发生时进入调试器。
    • 在您的问题上下文中,代码debugger; 与在该行的firebug 中插入断点完全相同。
    • 这个问题没有意义。这里没有100次。你说你正在抛出一个异常:所以这是你设置断点或放置调试器的地方;语句或 console.error() 或其他任何内容。除非您遇到异常 100 次,在这种情况下,您遇到的问题比我们在这里解决的要多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    相关资源
    最近更新 更多