Rev. 2.73

파이어버그 1.2 베타1판에서 발생하는 라인넘버 출력 오류를 바로잡기 위한 포스트입니다. 기다리면 수정된 업데이트가 나오겠지만 저 처럼 성질이 급하신 분들을 위한 임시방편 패치입니다. 이 오류는 스택 덤프(Stack dump)에서 발생하는 알 수 없는 오류입니다. 파이어버그의 콘솔 인젝터(Console injector)에 의해 "Components.stack" 명령으로 프레임을 덤프하고 파일명과 실행 위치를 추적할 수 있게 되어 있습니다. 이 과정에서 오류가 발생하더군요. 수정할 파일은 바로 "{확장기능 경로}\content\firebug\consoleInjector.js"입니다. 이 자바스크립트 파일의 297 라인부터 시작되는 getComponentsStackDump() 함수를 아래처럼 손보면 정상적(?)으로 작동하게 됩니다. ;)

변경 전

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

        while (frame && (normalizeURL(frame.filename) != userURL) )
            frame = frame.caller;

        return frame;
    }

변경 후

    function getComponentsStackDump()
    {
        // pseudo code by firejune
        for (var i = 0, frame = Components.stack; frame; frame = frame.caller) {
          if (i == 14) break;
          i++;
        }

        return frame;
    }

2008-07-10: 1.20b5 버전에서는 for문 안에 "if (i == 11) break;" 해야합니다.
2008-07-16: 1.20b6 버전에서는 for문 안에 "if (i == 17) break;" 해야합니다.

Comments

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

Your Reaction Time!

captcha

avatar