Я вижу много сообщений, подобных этому, в моей консоли Firebug на разных сайтах, включая одно, которое я пытаюсь отладить. breakOnError.js
- это какой-то системный файл / файл Firebug, не имеющий ничего общего ни с одним из сайтов, для которых он предназначен. Я не вижу ничего очевидного в том, что число 674 здесь может относиться, хотя, похоже, оно показывается для нескольких страниц (включая эту страницу с вопросом):
DebuggeeWouldRun: debuggee `self-hosted:674` would run breakOnError.js (line 105, col 13)` <system>
Консоль Firebug просто заполняется ими, если в окне «Сценарий» включена функция «Разрыв исключений» , иногда даже если я включаю ее после того, как страница уже загружена, со скоростью чуть более одной секунды. Он желтый, как предупреждающее сообщение (это не ошибка), но я не знаю, о чем он меня предупреждает.
Я не могу найти вразумительную информацию о том, что это такое и что это значит. Все, что даже почти уместно, - это пара вопросов поддержки Firefox/Mozilla (1249469 и 1252945 ), где обсуждаются некоторые очень тонкие детали реализации ... что бы это ни было. Никаких подсказок, которые я могу понять о том, что на самом деле означает это
Что это такое и что это значит?
Я нашел то, что выглядит как возможное объяснение от кого-то, кого я считаю разработчиком Mozilla, но оно очень техническое (целевая аудитория = другие разработчики Firefox), и я не совсем понимаю, что это на самом деле означает. Я думаю, возможно, это означает, что Firefox жалуется, потому что ему не нравится, как Firebug пытается взять на себя обработку прерываний, и Firebug реагирует на эти системные сообщения как предупреждения консоли, а затем просто продолжает делать то, что делал.
Недавно я получил реализацию отладчика.DebuggeeWouldRun, это ошибка, которая выдается, когда код отладчика пытается повторно ввести код отладчика, не проходя через благословенную "функцию вызова" (в настоящее время DFpeval и DOpexecuteInGlobal) 1. Эти повторные записи являются причиной того, что отладчик действительно не может приостановить работу отладчика.
В настоящее время это не ошибка, а предупреждение, а помогает определить сайты в коде отладчика, который пытается повторно ввести код отладчика. Предполагается, что после исправления всех сайтов произойдет ошибка.
... затем есть этот комментарий, который заставляет меня думать, что это, возможно, какой-то симптом причуды Firefox, о котором мне не нужно беспокоиться, но опять же, я не очень понимаю, что это означает, в частности, что означает "самообман". размещенный код "в этом контексте (будет ли расширение, такое как Firebug, считаться самостоятельным, потому что оно на моей машине?), и я понятия не имею, что такое" отделение для беженцев ":
Одним из текущих недостатков является то, что весь собственный код в отсеке отладчика запрещен. Это означает, что некоторые операции, которые на самом деле должны быть разрешены, предупреждены / запрещены.
Ramhound в комментариях предположил, что это может быть ошибка Firebug (ugghhh), и спросил о строке кода, упомянутой в сообщении.
Очевидно, что если есть ошибка, это вопрос разработчиков Firebug, это не то место, где можно попытаться ее исправить. Я пишу на тот случай, если это поможет кому-то объяснить, что на самом деле означает содержание сообщения («debugee», «self-hosted:674», «run»). Это функция вокруг строки, я отметил строку 105 с комментарием:
onDebuggerPaused: function(context, event, packet)
{
// Check the packet type, only "exception" is interesting in this case.
var type = packet.why.type;
if (type != "exception")
return;
// Reset the break-on-next-error flag after an exception break happens.
// xxxHonza: this is how the other BON implementations work, but we could reconsider it.
// Another problem is that the debugger breaks in every frame by default, which
// is avoided by reseting of the flag.
this.breakOnNext(context, false);
// At this point, the BON flag is reset and can't be used anymore in |shouldResumeDebugger|.
// So add a custom flag in packet.why so we know that the debugger is paused because of
// either the Console's "Break On Next" or the Script's "Break On Exceptions" option.
packet.why.fbPauseDueToBONError = true;
// Get the exception object.
var exc = DebuggerLib.getObject(context, packet.why.exception.actor);
if (!exc)
return;
Trace.sysout("BreakOnError.onDebuggerPaused;", {exc: exc, packet: packet});
// Convert to known structure, so FirebugReps.ErrorMessage.copyError() works.
var error = {
message: exc + "", // <<<<<<<<<<<<<<<<<<<<<<<<<<<< THIS IS LINE 105 <<<<<<<<<<<<<<<<
href: exc.fileName,
lineNo: exc.lineNumber
};
var lineNo = exc.lineNumber - 1;
var url = exc.fileName;
// Make sure the break notification popup appears.
context.breakingCause =
{
message: error.message,
copyAction: Obj.bindFixed(ErrorMessage.copyError, ErrorMessage, error),
skipAction: function addSkipperAndGo()
{
// Create a breakpoint that never hits, but prevents BON for the error.
var bp = BreakpointStore.addBreakpoint(url, lineNo);
BreakpointStore.disableBreakpoint(url, lineNo);
Debugger.resume(context);
},
};
},