Rev. 2.73

파이어버그가 배타딱지를 때고 1.2 안정(stable)버전을 내 놓았군요. 1.3 알파버전으로 업데이트 작업이 이어지고 있습니다. 여전히 콘솔에 라인넘버가 출력되지 않는 오류는 유효한 상태입니다. 아무래도 파이어버그 측은 이를 해결해 줄 것으로 보이지 않습니다. 1.2버전 이하에서는 콘솔(console.log) 함수를 호출한 시점의 파일명과 라인넘버를 표시할 수 있게 되어 있었는데, 이제 더이상 출력되지 않게 된 것이죠. 디버깅할 때 라인넘버가 표시되는 것은 여러모로 유용합니다. 오류가 발생했을 때 해당 파일명과 라인넘버가 출력되어 오류를 쉽게 추적하는 것과 비슷하죠. 그래서 파일명과 라인넘버의 링크가 다시 표시될 수 있게 했습니다. 수정할 부분은"{확장기능 경로}\content\firebug\consoleInjector.js"파일의 308라인에 위치한 getComponentsStackDump 함수를 아래처럼 수정하면 콘솔의 라인넘버를 표시하고 추적할 수 있습니다.

변경 전

    function getComponentsStackDump()
    {
        // Starting with our stack, walk back to the user-level code
        var frame = Components.stack;
        var userURL = win.location.href.toString();

        // Drop frames until we get into user code.
        while (frame && FBL.isSystemURL(frame.filename) )
            frame = frame.caller;
        
        // Drop two frames to get back to the point of call for eg console.log()
        if (frame)
            frame = frame.caller;
        if (frame)
            frame = frame.caller

        return frame;
    }

변경 후

    function getComponentsStackDump()
    {
        // Starting with our stack, walk back to the user-level code
        var frame = Components.stack
        var userURL = win.location.href.toString(); 
        var hostURL = win.location.host.toString();

        // Drop frames until we get into user code.
        for (var skip = true; frame; frame = frame.caller) {
            var test = !FBL.isSystemURL(frame.filename) && 
                       !userURL.match(frame.filename) &&
                       frame.filename.indexOf(hostURL) != -1
            if (test && !skip) break;
            if (test) skip = false;
        }

        return frame;
    }

Comments

Got something to add? You can just leave a comment.

Your Reaction Time!

captcha

avatar