Besteht die Möglichkeit herauszufinden, womit der Prozess noch beschäftigt ist, solange er sich nicht killen lässt?
Die Antwort heißt ganz klar Jein, ein entschiedenes "Sowohl als auch". Aber eigentlich nicht wirklich.
Taskmanager oder Processexplorer (dieser bietet mehr Möglichkeiten, anzeigen von Abhängigkeiten...).
Wie ist die CPU-Last?
100% -> vermutlich irgendwo eine Endlosschleife.
000% -> Das Programm tut nichts, ggfls. wartet es auf irgendwas. (Timeout einer Komponente, eines Netzzugriffes...)
Ändert sich die Speichernutzung?
Steigt sie? Es wird irgendwo Speicher reserviert.
Sinkt sie, es wird etwas freigegeben.
Ändert sich die Nutzung des virtuellen Speichers?
Steigt? Auslagerungsdatei könnte der Flaschenhals sein. (Speicherleck? ...)
Sinkt? Es wird Speicher freigegeben, auch hier könnte die Auslagerungsdatei der Flaschenhals sein.
Natürlich kann es ein Rechteproblem sein. Man darf nicht killen.
Wieviel Handles? Ändert sich die Anzahl?
Wieviel Threads? Ändert sich die Anzahl?
Ändert sich die Anzahl der Seitenfehler? Dann lebt das Programm irgendwie noch, da noch auf den Speicher zugegriffen wird.
Das sind alles mögliche (aber sicherlich nicht alle) Indizien, mit denen Du letztlich aufgrund Deiner Programmkenntnisse versuchen müsstest, die problematische(n) Stelle(en) zu finden.
Konkrete Informationen wirst Du kaum bekommen.
Ahnst Du, wo in Deinem Programm der Fehler sein könnte?
Dann dort eine Loggingfunktion einbauen, die in eine Datei schreibt, wo das Programm gerade ist. (Leider treten solche Hänger ja beim Debuggen schonmal ganz gerne nicht auf
)