代码之家  ›  专栏  ›  技术社区  ›  Raynos

让firebug控制台显示不同的行号

  •  4
  • Raynos  · 技术社区  · 14 年前

    我给萤火虫打过电话控制台.log在日志函数中(检查控制台是否存在以及其他标志)

    例如:

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

    我的问题是firebug控制台显示控制台.log函数调用而不是日志函数调用。

    4 回复  |  直到 14 年前
        1
  •  2
  •   Raynos    14 年前

        2
  •  1
  •   Spudley Pat    14 年前

    控制台.trace()将为您提供调用堆栈。

    看到了吗 http://getfirebug.com/logging

        3
  •  0
  •   technosaurus    12 年前

    我采用了一种稍微不同的方法,只是定义了一个属性,该属性通过故意抛出一个错误来设置一个uuu堆栈uuuuuu变量,从中我们可以得到文件名、行号(以及许多其他属性,如调用者和它们的行号,如果您选择实现它们的话)。

    我也没有设置一个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
  •  0
  •   marcnewport    11 年前

    似乎没有办法做到这一点,所以我一直在使用控制台组

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