it-swarm.com.de

Chrome Javascript Debugger-Haltepunkte nichts

Ich kann das Chrome-Debugging-Tool nicht herausfinden.

Ich habe Chromversion 21.0.1180.60 m.

Schritte, die ich gemacht habe:

  1. Ich drückte Strg-Umschalt-i, um die Konsole aufzurufen.
  2. Klicken Sie auf Sources, und wählen Sie dann die entsprechende Javascript-Datei aus, die Sie debuggen möchten.
  3. Ich setze Haltepunkte an den Stellen, an denen der Code angehalten werden soll, indem ich ein blaues Tag neben der linken Zeile an der Gosse anbringe.
  4. Ich klickte auf die Schaltfläche auf meiner Webseite (die eine von PHP gerenderte Seite ist), die den Javascript-Code einleitet.
  5. Der Code wurde erfolgreich ausgeführt, ohne zu stoppen.

Ich habe auch bemerkt, dass die Watch Expressions auch nicht funktionieren. Es sagt mir immer wieder, dass die Variable, die ich beobachten möchte, undefiniert ist.

Weitere Tests haben ergeben, dass mein Code dazu führt, dass der Haltepunkt fehlschlägt. Es scheint, dass es in der Zeile "$ (" # frmVerification "). Submit (function () {") fehlschlägt. Es tritt nicht in die Haltepunkte innerhalb dieser Funktion () ein.

Unten ist der:

//function to check name and comment field 
var test = "this is a test";
var test2 = "this is another test";

function validateLogin(){
    //if(userEmail.attr("value") && userPass.attr("value"))
        return true;
    //else
        //return false;
}

//onclick on different buttons, do different things.
function ajaxRequest(){

}
$(document).ready(function(){
  //When form submitted
    $("#frmVerification").submit(function(){
        var username = $("#username");
        var token = $("#token");
        var action = $("#action");
        var requester = $("#requester");
        if(validateLogin()){
            $.ajax({
            type: "post",
            url: "verification.php",
            data: "username="+username.html()+"&token="+token.val()+"&action="+action.val()+"&requester="+requester.val(),
            success: function(data) {
                try{
                    var jsonObj = $.parseJSON(data); //convert data into json object, throws exception if data is not json compatible
                    if(jsonObj.length > 0){//if there is any error output all data
                        var htmUl = $('<ul></ul>');
                        $.each(jsonObj, function(){
                            htmUl.append('<li>' + this + '</li>');
                        });
                        $("#errOut").html(htmUl);
                    }else{
                        alert("Your account is now activated, thank you. If you have already logged in, press OK to go to the home page. If not, you must log in first.");
                        window.location.replace("home.php");
                    }
                }
                catch(e){//if error output error to errOut]
                    $("#errOut").html("PHP module returned non JSON object: <p>"+data+"</p>");
                }
            }
        });
    }
    else alert("Please fill UserName & Password!");
        return false;
    });
});
62
chaser

Ich bin nicht sicher, warum Ihre Haltepunkte nicht treffen, aber eine sichere Methode, um in Ihren Code zu gelangen, ist das Tippen

debugger;

wo der Code angehalten werden soll, und dann mit geöffnetem Chrome-Entwicklerwerkzeug-Fenster erneut ausgeführt werden. 


Nur eine kleine Sache, die Sie beachten sollten: Bereinigen Sie anschließend die Debugger-Zeilen. Wenn Sie JavaScript-Dateien über den YUI-Kompressor ausführen, führt das Vorhandensein einer debugger;-Zeile zu einem Fehler. 

127
Adam Rackis

Dies ist eine späte Antwort, aber ich hatte das gleiche Problem, aber die Antwort war anders.

In meinem Fall gab es in meinem Code eine SourceURL-Referenz:

//@ sourceURL=/Scripts/test.js

Wenn diese Javascript-Datei vom Browser minimiert und geladen wird, teilt sie Chrome Dev Tools normalerweise mit, wo sich die unbemannte Version befindet.

Wenn Sie jedoch die unbemannte Version debuggen und diese Zeile vorhanden ist, werden die Chrome Dev Tools diesem sourceURL-Pfad anstelle des "normalen" Pfads zugeordnet.

Wenn Sie beispielsweise lokal auf einem Webserver arbeiten, lautet der Pfad zu einer bestimmten JS-Datei auf der Registerkarte Quellen in Chrome Dev Tools http://localhost/Scripts/test.js.

Wenn test.js das unten hat

//@ sourceURL=/Scripts/test.js

die Haltepunkte funktionieren nur dann, wenn der Dateipfad /Scripts/test.js und nicht die vollständig qualifizierte URL von http://localhost/Scripts/test.js ist.

Wenn Sie in Chrome 38 bei meinem obigen Beispiel bleiben, wird auf der Registerkarte "Quellen" jede Datei http://localhost/ ausgeführt. Wenn Sie auf test.js klicken, wird Chrome http://localhost/Scripts/test.js geladen.

Sie können alle gewünschten Haltepunkte in diese Datei einfügen, und Chrome trifft keine davon. Wenn Sie in Ihrem JS einen Haltepunkt setzen, bevor er eine Funktion in test.js aufruft und dann in diese Funktion eintritt, wird Chrome eine neue Registerkarte mit dem Pfad /Scripts/test.js öffnen. Wenn Sie Haltepunkte in diese Datei einfügen, wird der Programmfluss angehalten. 

Wenn ich die @ sourceURL-Zeile aus der JS-Datei entfernt habe, funktioniert alles wieder normal (d. H. Wie Sie es erwarten würden).

20
Stephen

Wahrscheinlich dieser Fehler https://code.google.com/p/chromium/issues/detail?id=278361

Dies wird mit meinem Chrome 31.0.1650.57 (Official Build 235101) unter Linux reproduziert.

Ich starte den Browser neu, um das Problem zu beheben.

9
gumkins

Ich habe ein ähnliches Problem. Haltepunkte funktionierten nicht, sofern ich nicht debugger; verwendet habe. Ich habe mein Haltepunktproblem mit "Standardeinstellungen wiederherstellen und neu laden" behoben. Es befindet sich in den Chrome Developer Tools, Einstellungen, Standardeinstellungen wiederherstellen und erneut laden.

6
user2274860

Ich habe das mehrmals getroffen, zuerst funktioniert es gut mit localhost, plötzlich funktionieren die Haltepunkte nicht, ich wechsle zu 127.0.0.1, dann funktioniert es wieder. Hoffnung hilft.

3
dasons

Stellen Sie sicher, dass das Skript mit dem "Debugger" Die Anweisung darin wird von Chrome nicht als Blackbox bezeichnet. Sie können auf der Registerkarte "Quellen" das Blackboxing überprüfen und deaktivieren, falls dies der Fall ist.

BEARBEITEN: Screenshot hinzugefügt.

 How to turn off blackboxing.

2
John Alexander

stellen Sie sicher, dass Sie die JavaScript-Konsole (oder -quellen) in Ihrem Chrome-Fenster geöffnet haben. Andernfalls wird der Haltepunkt niemals erreicht. Sie können die JavaScript-Konsole über die Optionsschaltfläche in der rechten oberen Ecke -> Tools -> Javascript-Konsole öffnen. 

2
Thilak

Ich bin auf ähnliche Probleme gestoßen, sowohl in chrome als auch in firefox, obwohl dies möglicherweise nicht die Lösung für Ihr Problem ist. Ich teile hier die Hoffnungen, dass es anderen helfen kann. Ich bin dieser Situation bereits in anderen Projekten begegnet aber ich habe nie verstanden warum, bis es heute wieder auftauchte.

Szenario:

Ich habe eine Seite, die zwei bootstrap Modals, die aus derselben Quelle stammen, und einen Satz von Javascript-Dateien verwendet (blueimp's awesome jquery fileupload).

  • BS Modal 1 wird beim Laden der Seite (über PHP) gerendert und ist immer auf der Seite vorhanden. Es wird zum Hinzufügen eines neuen zugehörigen Datensatzes verwendet. (CakePHP .... denke SalesForcey Typ Zeug)

  • BS Modal 2 wird zum Bearbeiten vorhandener verwandter Datensätze verwendet, und der HTML-Inhalt wird aus einem Ajax-Aufruf abgerufen und über jQuery an das DOM angehängt.

  • Javascript unterstützt beide Modalitäten, die über Standard-HTML-Tags <script> Enthalten sind.

Ich habe festgestellt, dass Haltepunkte nur auf Modal 1 ausgelöst werden. Sie funktionieren nicht, wenn der Code auf dem dynamisch hinzugefügten Modal 2 ausgeführt wird, obwohl es ziemlich offensichtlich ist, dass der Code tatsächlich ausgewertet und ausgeführt wird. Warnmeldungen werden angezeigt, Dinge vom Typ Codey werden ausgeführt und die Ausgabe folgt der im Code festgelegten Logik.

Ich bin nicht tiefer eingetaucht, um weitere Nachforschungen anzustellen, weil ich unter Zeitdruck stehe, aber ich wollte es dort rausbringen und der Community etwas zurückgeben.

PS: Ich benutze SO die ganze Zeit, aber dies ist mein erster Beitrag, also mach es mir leicht :-)

2
Mikey4Dice

Ich hatte ein Problem, bei dem die Haltepunkte von Chrome nicht ausgelöst wurden. Als ich versuchte, 'debugger' in meinem Code zu verwenden, konnte ich nur den Code in der Version VM meines Codes durchgehen. Mein Problem war, dass ich die Ressourcen falsch abgebildet habe. Neuzuordnung behebte mein Problem.

2
DaneEdw

Stellen Sie sicher, dass Sie denselben Host in der URL verwenden, die Sie beim Einrichten der Zuordnung verwendet haben. Z.B. Wenn Sie sich beim Einrichten und Zuordnen des Arbeitsbereichs in http://127.0.0.1/my-app befanden, funktionieren Haltepunkte nicht, wenn Sie die Seite über http://localhost/my-app..__ anzeigen. Vielen Dank, dass Sie dies bereits gelesen haben. Siehe meine Antwort auf die Chromium-Ausgabe hier

2

Wenn Sie also zusätzlich zur Antwort von Adam Rackis Fehler in Ihrer Javascript-Datei über dem Haltepunkt haben, werden Sie diese nicht erreichen, unabhängig davon, ob Sie sie kennzeichnen oder debugger; eingeben.

Hier ist ein Beispiel:

if (nonExistentVar === "something") {
  console.log("this won't happen as the above errors out");
}
debugger;
console.log("this won't print either")
0
JT.

Ich bin nicht sicher, wie es funktioniert hat, aber die F1-Taste für Einstellungen und rechts unten die Taste "Standard wiederherstellen und neu laden" haben bei mir funktioniert.

0
Stubbs

Meine Lösung bestand darin, den lokalen Speicher, den Sitzungsspeicher und die Cookies von der Registerkarte "Anwendungen" zu löschen. Danach unterbrach Chrome die Skriptausführung an den in Sources definierten Haltepunkten.

  1. Klicken Sie auf die Registerkarte "Anwendungen" von Google Chrome
  2. Klicken Sie mit der rechten Maustaste auf die URL unter jedem Ordner> Löschen

Screenshot: Registerkarte Anwendungen

0
Purple_Kitten

Ich hatte das gleiche Problem in einer 10K-Datei. Die Haltepunkte wurden ignoriert.
Hardcodierte _debugger-Anweisungen haben funktioniert, aber sie können nicht umgeschaltet werden und können ärgerlich sein, wenn sie in eine Schleife eingefügt werden .. Meine Lösung, die ein bisschen ein Hacker ist, aber es funktioniert, ist es, die folgenden Punkte an die Spitze hinzuzufügen der Datei: 

let myDebuggerFlag = false;
let myDebugger = function () {
    if (myDebuggerFlag) {
        debugger;
    }
}

dann füge ich einen myDebugger () hinzu; Inline, wo ich normalerweise einen Haltepunkt verwenden würde.

um das Debuggen zu aktivieren, muss einfach myDebuggerFlag = true eingegeben werden. in der Konsolenzeile . (Sie müssen natürlich zuerst meinen myDebugger verlassen.

0
Mark Fee

wie ich mit Chrome erlebt habe, müssen wir die Browserkonsole öffnen, damit der Debugger beim Laden der Seite ausgeführt wird.

legen Sie diese Datei irgendwo in die Javascript-Datei, die Sie ausführen möchten

debugger

Öffnen Sie die Browserkonsole und laden Sie die Seite neu.

der Debugger wird wie im folgenden Beispiel ausgeführt

 enter image description here

0
Samda

Ziemlich späte Antwort, aber keine der obigen Antworten hat mir geholfen und war etwas anderes

beim Verweisen auf die Javascript-Datei type = "text/javascript" fehlte in der Legacy-Anwendung, die ich arbeitete

<script  src="ab.js" ></script>

unten funktionierte man und die Haltepunkte trafen wie erwartet

 <script  src="ab.js" type="text/javascript"></script>
0
Peru