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

4

我已经将对firebug控制台的console.log的调用封装在一个日志函数中(该函数检查控制台是否存在以及其他标志)。

例如:

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

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

有没有办法更改Firebug显示的行号?


1
相关:https://dev59.com/PknSa4cB1Zd3GeqPRNDP - Andy E
1
这很有用,我知道如何处理堆栈跟踪,我的问题是,由于Firebug控制台具有内置的转到行单击事件,我是否可以编辑右侧显示的行号。 - Raynos
4个回答

2

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


1

控制台(console).trace 给了我完整的函数调用堆栈。但是我只想知道堆栈向上跟踪一级,而不会垃圾填满整个控制台。 - Raynos

0

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

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

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接