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

时间:2010-09-08 11:24:16

标签: javascript debugging console firebug

我在日志记录函数中调用firebugs console.log(检查控制台是否存在以及其他标志)

例如:

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

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

有没有办法改变firebug显示的行号?

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

有关详细信息,请参阅http://getfirebug.com/logging

答案 2 :(得分:0)

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

此外,我不是设置日志功能,而是将其设置为变量,但设置时会记录该变量。这将是设置LOG的位置,而不是定义的位置。

就像LOG =“我的消息”一样简单。然后,您可以稍后将其用作变量,以使用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)

答案 3 :(得分:0)

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

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