Wenn bei der Verwendung von Swoole ein Segfault auftritt, melden Sie ihn bitte rechtzeitig dem Entwicklungsteam. Sie können das GDB-Tool verwenden, um eine Kopie der BT-Informationen zu erhalten. Um GDB-Tracking zu verwenden, müssen Sie beim Kompilieren von Swoole den Parameter --enable-debug hinzufügen.
Wenn GDB nicht praktisch ist, können Sie auch ein Demoprogramm bereitstellen, das stabil reproduziert werden kann
Core-Dump öffnen
ulimit -c unlimited
Verwenden Sie GDB, um Core-Dump-Informationen anzuzeigen . Die Kerndatei befindet sich im Allgemeinen im aktuellen Verzeichnis. Wenn das Betriebssystem sie verarbeitet und die Kernspeicherauszugsdatei in einem anderen Verzeichnis abgelegt hat, ersetzen Sie sie bitte durch den entsprechenden Pfad
gdb php core gdb php /tmp/core.4596
Geben Sie bt unter gdb ein, um den Aufrufstapel anzuzeigen Informationen
(gdb)bt Program terminated with signal 11, Segmentation fault. #0 0x00007f1cdbe205e0 in swServer_onTimer (reactor=<value optimized out>, event=...) at /usr/local/php/swoole-swoole-1.5.9b/src/network/Server.c:92 92 serv->onTimer(serv, timer_node->interval); Missing separate debuginfos, use: debuginfo-install php-cli-5.3.3-22.el6.x86_64
Verwenden Sie den Befehl f in gdb, um das Codesegment anzuzeigen
(gdb)f 1 (gdb)f 0
Wenn keine Informationen zum Funktionsaufrufstapel vorhanden sind, wurden die Debug-Informationen möglicherweise während der Kompilierung entfernt. Bitte ändern Sie das Makefile im Swoole-Quellverzeichnis manuell und ändern Sie CFLAGS in
CFLAGS = -Wall -pthread -g -O0
Empfohlenes Lernen: Swoole-Video-Tutorial
Das obige ist der detaillierte Inhalt vonSo überprüfen Sie Swoole-Fehler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!