파이어버그 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;" 해야합니다.