Ich sehe in meiner Firebug-Konsole auf verschiedenen Sites eine Menge solcher Nachrichten, einschließlich einer, die ich zu debuggen versuche. breakOnError.js
Es scheint sich um eine System- / Firebug-Datei zu handeln, die nichts mit den Websites zu tun hat, für die dies angezeigt wird. Ich sehe nichts, worauf sich die Nummer 674 hier beziehen könnte, obwohl sie auf mehreren Seiten zu erscheinen scheint (einschließlich dieser Fragenseite):
DebuggeeWouldRun: debuggee `self-hosted:674` would run breakOnError.js (line 105, col 13)` <system>
Die Konsole von Firebug füllt sich nur mit ihnen, wenn im Skriptfenster die Option " Unterbrechung bei Ausnahmen" aktiviert ist, manchmal sogar, wenn ich sie nach dem Laden der Seite mit einer Geschwindigkeit von etwas mehr als einer Sekunde einschalte. Es ist gelb, wie eine Warnmeldung (es ist kein Fehler), aber ich weiß nicht, worüber ich gewarnt werden könnte.
Ich kann keine verständlichen Informationen darüber finden, was dies ist oder was es bedeutet. Alles, was auftaucht, was beinahe relevant ist, sind ein paar Firefox / Mozilla-Support-Probleme ( 1249469 und 1252945 ), die einige sehr feine Details der Implementierung von ... what this is diskutieren. Keine Ahnung, was das eigentlich bedeutet.
Was ist das und was bedeutet das?
Ich habe eine mögliche Erklärung von jemandem gefunden, von dem ich glaube, dass er ein Mozilla-Entwickler ist , aber es ist sehr technisch (Zielgruppe = andere Firefox-Entwickler) und ich verstehe nicht wirklich, was das eigentlich bedeutet. Ich denke, das bedeutet vielleicht, dass Firefox sich beschwert, weil es nicht gefällt, wie Firebug versucht, das Pausenhandling zu übernehmen, und Firebug auf diese Systemmeldungen als Konsolenwarnungen reagiert und dann einfach weiter macht, was es getan hat?
Ich habe kürzlich eine Implementierung von Debugger.DebuggeeWouldRun gelandet. Dies ist ein Fehler, der ausgelöst wird, wenn der Debugger-Code versucht, den Debuggee-Code erneut einzugeben, ohne eine gesegnete "Aufruffunktion" zu durchlaufen (derzeit DFpeval und DOpexecuteInGlobal) 1 . Diese Neueinträge sind die Ursache dafür, dass der Debugger den Debugger nicht wirklich anhalten kann.
Derzeit handelt es sich nicht um einen Fehler, sondern um eine Warnung. Sie soll Websites im Debugger-Code identifizieren, die versuchen, den Debuggee-Code erneut einzugeben. Die Absicht ist, dass es ein Fehler ist, wenn alle Sites repariert sind.
... dann gibt es diesen Kommentar, der mich denken lässt, dass dies vielleicht ein Symptom für eine Firefox-Eigenart ist, über die ich mir keine Sorgen machen muss, aber ich verstehe auch nicht wirklich, was es bedeutet, insbesondere, was es unter "selbst" versteht. gehosteter Code "in diesem Zusammenhang (würde eine Erweiterung wie Firebug als selbst gehostet gelten, weil sie sich auf meinem Computer befindet?), und ich habe keine Ahnung, was" das Debugee Compartment "ist:
Ein aktuelles Manko ist, dass der gesamte selbst gehostete Code im Debuggee-Bereich gesperrt ist. Dies bedeutet, dass einige Operationen, die tatsächlich erlaubt sein sollten, vor / unzulässig gemacht werden.
Ramhound schlug in Kommentaren vor, dass es sich möglicherweise um einen Firebug-Bug (ugghhh) handelt, und fragte nach der Codezeile, auf die in der Nachricht verwiesen wird.
Wenn es einen Fehler gibt, den die Firebug-Entwickler haben, ist dies natürlich nicht der richtige Ort, um ihn zu beheben. Ich poste, falls es jemandem hilft, zu erklären, was der Inhalt der Nachricht ("Flüchtling", "selbst gehostet: 674", "ausgeführt") tatsächlich bedeutet. Dies ist die Funktion um die Zeile, ich habe Zeile 105 mit einem Kommentar markiert:
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);
},
};
},
Antworten:
Der "Debuggee" ist das, was debuggt wird. Bei Firefox wird der JavaScript-Code über den Debugger ausgeführt, insbesondere der JavaScript-Code der Website. (Es kann sich auch um browserinternen JavaScript-Code handeln.)
Die Firefox-Debugger-API ist in MDN beschrieben , aber auch sehr technisch und erklärt die Terminologie nicht. Es gibt auch eine Beschreibung der
Debugger.DebuggeeWouldRun
Ausnahme , die die Dinge ein wenig klarer macht, wenn Sie die Definition von oben im Auge behalten:Wenn Sie dies auf Firebug anwenden, bedeutet dies, dass der Debugger-Code von Firebug nicht nur den Code einer Seite überprüft, sondern den Code der Seite tatsächlich (versehentlich) ausführt. Einfaches Beispiel:
Dies erhöht die
i
Häufigkeit, mit der derobj.counter
Getter aufgerufen wird. Wenn Sie beispielsweise dieobj
Variable in Firebugs Watch- Seitenbereich untersuchen , werden Sie feststellen, dass der Zähler erhöht wird, nur weil Firebug darauf zugreift:Allerdings werden die von Ihnen genannten Ausnahmen nicht angezeigt, auch wenn die Einstellungen
javascript.options.throw_on_debuggee_would_run
undjavascript.options.dump_stack_on_debuggee_would_run
, wie im Diskussionsgruppenthread von Mozilla erwähnt , auftrue
(diefalse
standardmäßig auf festgelegt sind) festgelegt sind.Und ich schlage vor, Sie legen diese beiden Einstellungen auf fest,
false
wenn Sie nicht möchten, dass diese Ausnahmen in der Konsole protokolliert werden.quelle
self-hosted:674
könnte? Ich vermute die 674. js-Datei, die Firefox von meinem eigenen Computer liest und daher Teil von Firebug ist. und die anderen 673 sind verschiedene Teile von Firefox selbst, Firebug und anderen Firefox-Erweiterungen?674
ist die Zeilennummer in dieser Datei.