2012-03-26 11 views
2

Ich habe ein ziemlich komplexes Skript, das Sockets öffnet, HTTP-Server, liest/schreibt in Dateien, setzt Timeouts usw. Bei Erreichen einiger Bedingungen sollten alle diese aufhören - ich lösche alle Timeouts, schließe alle Server und so auf.Wie kann man wissen, was einen Knotenprozess am Stoppen hindert?

Aber manchmal hört der Prozess gut auf, und manchmal wartet er nur darauf, dass etwas passiert. Ich kann den Knotenprozess beenden, aber ich möchte die Ursache für dieses Verhalten herausfinden, beheben und den Prozess selbst stoppen. Ist es möglich zu debuggen, was verhindert, dass es beendet wird?

Update:

ich Jan Vorschlag gefolgt und das ich, was ich habe, wenn ich „Debugging“ versucht, einen einfachen setTimeout Anruf:

/tmp/node2/bin/node test.js 
[debug] UV_TIMER 0x1cdfd20 (fd:910168617, refs:0, flags:0x0) 
[debug] UV_ASYNC 0xc096e8 (fd:0, refs:-1, flags:0x0) 
[debug] UV_ASYNC 0xc09658 (fd:0, refs:0, flags:0x0) 
[debug] UV_IDLE 0xc09778 (fd:0, refs:-2, flags:0x0) 
[debug] UV_ASYNC 0xc041c0 (fd:0, refs:-1, flags:0x0) 
[debug] UV_ASYNC 0xc03de0 (fd:0, refs:-1, flags:0x0) 
[debug] UV_TIMER 0xc03d40 (fd:0, refs:-1, flags:0x0) 
[debug] UV_IDLE 0xc03ca0 (fd:0, refs:-1, flags:0x0) 
[debug] UV_CHECK 0xc03c00 (fd:0, refs:-1, flags:0x0) 
[debug] UV_IDLE 0xc03a00 (fd:0, refs:-1, flags:0x0) 
[debug] UV_CHECK 0xc03b60 (fd:0, refs:-1, flags:0x0) 
[debug] UV_PREPARE 0xc03ac0 (fd:0, refs:-1, flags:0x0) 

Also das ist für mich nicht sehr nützlich, aber Ich denke, es gibt keine anderen Möglichkeiten.

Antwort

1

Nicht einfach. Sie können mit ihm (node appname.js) this patched version von node.js, starten Sie Ihre Anwendung kompilieren und dann laufen:

pkill -USR2 node 

Diese die aktiven Griffe alle in diesem Moment auf der Ereignisschleife wird auszudrucken.


N.B. Dies ist eine vier Monate alte Version, also ist es ein bisschen veraltet. Es sollte an einem Punkt in den Knoten gehen, aber noch keine Pläne.

+0

Fertig, aber die einzige Sache, die gedruckt wird, ist "Benutzerdefiniertes Signal 2" und dann wird der Prozess beendet. – Fluffy

+0

Ignoriere das, ich hätte vor dem Kompilieren zum anderen Zweig wechseln sollen – Fluffy

Verwandte Themen