Heim  >  Artikel  >  Backend-Entwicklung  >  Gdb-Debugging-PHP findet problemlos den aktuell ausgeführten Code

Gdb-Debugging-PHP findet problemlos den aktuell ausgeführten Code

little bottle
little bottlenach vorne
2019-04-25 17:52:044304Durchsuche

Angenommen, es ist ein PHP-Skript online und eines Tages geht plötzlich etwas schief. Es wird nicht verarbeitet, aber der Prozess wird nicht beendet. Diese Situation kann auf einen abnormalen Ruhezustand oder eine Endlosschleife des Codes zurückzuführen sein, aber wie können wir sie lokalisieren? Was wir zu diesem Zeitpunkt am meisten wissen möchten, ist, was dieses Skript gerade tut. Dies ist nützlich, wenn gdb+zbacktrace verwendet wird.

Schreiben Sie zunächst ein Testskript test.php und eine Schlaffunktion darin. Sie können es auch in eine Endlosschleife ändern.

<?phpfunction Mecho($i){ echo $i.PHP_EOL;
}$i = 20;while($i>0){if($i%2==0){
  Mecho($i);
}sleep(100000);$i--;
}

zbacktrace ist im heruntergeladenen PHP-Quellcode-Paket verfügbar. Meine Umgebung ist neu installiert und die aktuelle PHP-Version ist php7.2.9

Direkte CLI-Ausführung test.php

php test.php

Suchen Sie dann den aktuellen PHP-Prozess

 

Dann verwenden Sie gdb zum Debuggen

gdb -p 56571

Debuggen

source /usr/local/src/php-7.2.9/.gdbinit
zbacktrace

Damals wusste ich, dass die Sleep-Funktion in Zeile 11 von test.php den Prozess in den Ruhezustand versetzt.

Verwandte Tutorials: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonGdb-Debugging-PHP findet problemlos den aktuell ausgeführten Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Regelmäßige PHP PCRE-AnalyseNächster Artikel:Regelmäßige PHP PCRE-Analyse