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!