Fragensteller
Endlosschleifen finden

Allgemeine Diskussion
-
Hallo Forum
Ich habe ein System mit vielen parallelen Threads laufen und ich schaffe es, dass mir ein Thread manchmal in eine Endlosschleife gerät. Ich glaube zu wissen, welcher Thread das ist, aber natürlich nicht die Stelle an der dies passiert.
Nun ist es aber leider so, dass dies im Debug-Mode nicht passiert (sonst könnte ich einfach das Debuggging abbrechen und nachsehen, wo er gerade war).
Was kann ich tun, um diese Stelle doch einigermaßen zu lokalisieren (außer Code stückweise zu entfernen und prüfen ab wann es nicht mehr passiert) .. vor allem, weil es ja nur sporadisch auftritt.
Grüße
FireHeart
- Typ geändert Aleksander Chalabashiev Dienstag, 7. April 2015 14:20 keine bestätigte Lösung
Alle Antworten
-
Hallo Fire-Heart,ist der Thread noch aktuell?
Gruß
Aleksander
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Programm laufen lassen ohne den Debugger bis der Zustand eintritt.
Dann den Debugger attachen und Break All ausführen.
Thread Window öffnen und die Call Stacks der Threads ansehen.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
-
Hallo Martin
Das kannte ich nicht.
Wie kann ich einen Debugger an eine hängende Release-Version "attachen"?
Übrigens habe ich das eine Problem des Hängers durch die klassische Methode "Programmteile entfernen und warten was passiert" letztlich doch gelöst. Es hatte wohl jeder hier im Thread recht...es war eine uninitialisierte Variable schuld, allerdings nicht weil sie nicht initialisiert war, sondern weil sie in bestimmten Fällen gar nicht verwendet werden dürfen hätte. Ein einfaches "IF" hatte das Problem dann gelöst ... das Finden war zuvor freilich etwas schwieriger.
Grüße
FireHeart
-
Hallo FireHeart,
durch Ausprobieren nach Martins Anleitung gelingt es, den Aufruf-Stack anzuschauen, hab's gerade selbst probiert ;). Menü DEBUGGEN/An den Prozess anhängen... und Doppelklick auf deinen Release-Prozess, dann auf Debug-Pause oder im Menü DEBUGGEN/Alle unterbrechen oder Strg+Alt+Break.
Gruß
Heiko -
Hallo Fire-Heart,
Hast Du das Anfügen des Debuggers an den Release-Prozess ausprobiert, wie von Martin und Heiko beschrieben?
Gruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.