Hi!
Wie der Titel des Themas schon sagt dreht sich die geschichte um das debuggen eines remote-systems auf dem eine multi-threaded applikation läuft.
Die herausforderung vor der ich stehe ist: wenn ich mich mit dem debugger zur VM verbinde und das Programm an einer Stelle anhalte, bleibt nur der Thread stehen, der gerade gerade über den Breakpoint stolpert; alle anderen Threads laufen weiter. Benötigen nun laufende Threads Daten vom angehaltenen Thread (z.b. irgendein Daten-"server") und müssen diese Daten innerhalb eines gewissen timeouts geliefert werden, damit client-Threads (in meinem fall vorgabengemäß) weiterlaufen können, wirds eng. Es gibt keinen Gesamtzustand der debuggt werden kann, unter Umständen kann es auch notwendig sein, in andere Threads und deren Status einblick zu nehmen.
Nun stellt sich mir die Frage: wie kann man die VM dazu bringen, beim erreichen eines Breakpoints alle Threads anzuhalten, und nicht nur jenen, der auf den Breakpoint stößt? Ich verwende Eclipse-eigenen Debugger.
Wie der Titel des Themas schon sagt dreht sich die geschichte um das debuggen eines remote-systems auf dem eine multi-threaded applikation läuft.
Die herausforderung vor der ich stehe ist: wenn ich mich mit dem debugger zur VM verbinde und das Programm an einer Stelle anhalte, bleibt nur der Thread stehen, der gerade gerade über den Breakpoint stolpert; alle anderen Threads laufen weiter. Benötigen nun laufende Threads Daten vom angehaltenen Thread (z.b. irgendein Daten-"server") und müssen diese Daten innerhalb eines gewissen timeouts geliefert werden, damit client-Threads (in meinem fall vorgabengemäß) weiterlaufen können, wirds eng. Es gibt keinen Gesamtzustand der debuggt werden kann, unter Umständen kann es auch notwendig sein, in andere Threads und deren Status einblick zu nehmen.
Nun stellt sich mir die Frage: wie kann man die VM dazu bringen, beim erreichen eines Breakpoints alle Threads anzuhalten, und nicht nur jenen, der auf den Breakpoint stößt? Ich verwende Eclipse-eigenen Debugger.