有没有办法伪造Firebug控制台中的调用文件?

时间:2010-10-18 11:47:54

标签: javascript firebug

注意:Firebug是Firebug扩展和/或Webkit开发人员工具。

假设调用文件我是指控制台输出右侧的链接,指向调用输出函数(如console.log)的位置。

当你有错误消息传递等的统一处理程序时,这就成了一个问题,因此所有的console.log调用都来自同一个文件&行号。

有没有办法伪造这些信息?或者将这样的链接(指向行号)烘焙到firebug控制台日志中(假设有一个堆栈跟踪)?只需在任何日志的末尾添加文件名和行号,就会给控制台输出带来噪音,使其变得混乱。

3 个答案:

答案 0 :(得分:2)

大多数现代浏览器都定义了console.log函数。如何而不是编写自己的错误处理程序,你继续调用console.log到处都有错误。然后,对于没有定义console.log的浏览器,您可以使用您想要的任何内容自己定义它。例如,如果你想警告IE中的错误(或没有安装firebug的FF等等)你可以使用这段代码:

<html>
<head>
    <title>Test</title>
</head>
<body>
    <button onclick="throwError()">
        Throw Error</button>

    <script type="text/javascript">
        function throwError() {
            console.log("error here!");
        }

        if (!window.console) {
            window.console = {
                log: function(e) {
                    alert(e);
                }
            };
        }

        //Added in EDIT: in production add these lines below to overwrite browser's console.log function
        window.console.log = function(e) {
            alert("production alert: " + e); //or whatever custom error logging you want
        };
    </script>

</body>
</html>

您可以向控制台对象添加任何内容。我已经在IE8和Firefox中对此进行了测试,我非常有信心你可以将这个想法用于你支持的任何浏览器。

编辑:您还可以在Firefox,Safari和Chrome中覆盖默认的console.log功能。只需将控制台对象的日志成员重新映射到一个新功能,即在生产中执行任何操作。

答案 1 :(得分:0)

在firebug论坛上进行简短的拖网似乎暗示它(有时候?)looks at the exception to determine what the line number is

所以你很可能通过明智的按摩来伪造它。

答案 2 :(得分:0)

使用Firebug可以选择显示调用堆栈以及错误。 单击控制台选项卡名称旁边的向下箭头以查看并激活它。 它会在消息的左侧显示一个“加号”图标,显示堆栈。 这可能会使您更接近导致错误的代码。

如果您还需要使用console.error()记录错误以使用它。 (不知道这与铬的兼容性如何)