【问题标题】:Getting firebug console to display different line numbers让萤火虫控制台显示不同的行号
【发布时间】:2010-09-08 11:24:15
【问题描述】:

我已将对 firebugs console.log 的调用包装在一个日志记录函数中(检查控制台是否存在以及其他标志)

例如:

Log(string) { if (console && DEBUG) console.log(string); }

我的问题是萤火虫控制台显示了 console.log 函数调用的行号,而不是 Log 函数调用。

有什么办法可以改变萤火虫显示的行号吗?

【问题讨论】:

  • 这很有用,我知道如何处理堆栈跟踪我的问题是我可以编辑 firebug 控制台在右侧显示的行号,因为它有一个 in build goto line click事件。

标签: javascript debugging console firebug


【解决方案1】:

Firebug 不允许您通过代码更改控制台上的行号。

【讨论】:

    【解决方案2】:

    console.trace() 将为您提供调用堆栈。

    请参阅http://getfirebug.com/logging 了解更多信息。

    【讨论】:

    • console.trace 为我提供了完整的堆栈跟踪。我只想知道堆栈跟踪 1 级而不阻塞控制台
    【解决方案3】:

    我采取了一些不同的方法,只是定义了一个属性,通过故意抛出一个错误来设置一个 __stack__ 变量,从中我们可以获取文件名、行号(以及许多其他内容,例如调用者及其行号,如果您选择实施它们)。

    另外,我没有设置日志函数,而是将其设置为一个变量,但设置时会被记录。这将是设置 LOG 的位置,而不是定义位置。

    就像 LOG="my message" 一样简单。然后您可以稍后将其用作变量,以通过alert(LOG)获取上次调试的位置

    /*@const*/ //for closure-compiler
    DEBUG=2 // 0=off, 1=msg:file:line:column, 2=msg:stack-trace
    if(DEBUG){
    
    /*@const @constructor*/
    Object.defineProperty(window,'__stack__',{get:function(){
        try{_ფ_()}catch(e){return e.stack.split(":")}
    }})
    
    /*@const @constructor*/
    Object.defineProperty(window,'__file__',{get:function(){
        var s=__stack__,l=s.length
        return (isNaN(s[l-2]))?s[l-2]:s[l-3]
    }})
    
    /*@const @constructor*/
    Object.defineProperty(window,'__line__',{get:function(){
        var s=__stack__,l=s.length
        return (isNaN(s[l-2]))?s[l-1]:s[l-2]
    }})
    
    /*@const @constructor*/
    Object.defineProperty(window,'__col__',{get:function(){
        var s=__stack__,l=s.length
        return (isNaN(s[l-2]))?"NA":s[l-1]
    }})
    
    /*@const @constructor*/
    Object.defineProperty(window,'LOG',{
        get:function(){return out},
        set:function(msg){if(DEBUG>1)out=msg+"\t-\t"+__stack__
            else out=msg+" in file:"+__file__+" @ Line:"+__line__+", Column:"+__col__
            console.log(out)}
    })
    }//end if(DEBUG)
    

    【讨论】:

      【解决方案4】:

      似乎没有办法做到这一点,所以我一直在使用console.group

      console.group(file +' (line '+ line +')');
      console.log(data);
      console.groupEnd();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-10
        • 1970-01-01
        • 2014-03-12
        • 2013-09-07
        • 2011-12-21
        • 1970-01-01
        • 2011-05-04
        相关资源
        最近更新 更多