Entwickler-Ecke
Programmierwerkzeuge - unbekannte Endlosschleife unterbrechen
GURKE deluxe - So 24.02.13 15:51
Titel: unbekannte Endlosschleife unterbrechen
Hallo,
Ich habe in meinem Programm an unbekannter Stelle eine Endlosschleife eingebaut. Leider ist das Programm bereits zu komplex geworden, als das ich den Ursprung mit Debugging einfach heraussuchen könnte. Jegliche Änderungen, die ich zu letzt getätigt habe, scheinen nichts damit zu tun zu haben. Jetzt ist mein Problem, dass ich nicht weiß, wie ich diese Endlosschleife einfach finden kann. Gibt es bei Visual C# eine einfache Möglichkeit, per Tastenkombination, o.ä. den laufenden Code, wie bei einem Break-Point zu unterbrechen, damit ich weiß, wo er gerade hängt?
Herzlichen Dank schon mal!
Gruß
Julian
Moderiert von
Th69: Topic aus C# - Die Sprache verschoben am So 24.02.2013 um 15:22
Th69 - So 24.02.13 16:28
Hallo,
ja, unter dem Menüpunt "Debug" gibt es "Break all". Dann kannst du im Threads-Fenster die verschiedenen Threads umschalten und dir jeweils den Stacktrace anschauen.
IhopeonlyReader - So 24.02.13 20:47
wieso wartest du nicht bis dein programm sich "aufhängt" durch die endlosschleife, drückst dann auf pause und machst dann mit F7 weiter... normalerweise solltest du dann direkt in der (wahrscheinlich while schleife, oder zu schnell eingestellter timer, oder porz, in der die eigene proz aufgerufen wird) dauerschleife sein...
und sonst such nach while schleifen etc...
GURKE deluxe - So 24.02.13 20:50
Hallo,
Bei mir gibts es nur den Menüpunkt Debugging und darin gibt es keine Funktion, zum Pausieren, nur zum Beenden des gesamten Programmes. (Siehe Bild)
Das funktioniert leider nicht, weil es keine "echte" Endlosschleife ist. Sondern Timer, die Prozeduren aufrufen, in denen Schleifen sind, die viel zu lange brauchen, weil vermutlich ein kleiner Fehler drin ist. Das heißt, er kommt immer wieder aus den Schleifen raus, nur dauert das dann halt einige Sekunden und da meldet C# noch keine Fehler.
jaenicke - So 24.02.13 22:06
Du kannst auch den Process Explorer benutzen. Dort wird dir angezeigt wo die Threads gerade sind und auch den Stacktrace kannst du dir anzeigen lassen.
Ralf Jansen - So 24.02.13 23:03
Tastaturshortcut wäre Ctrl+Alt+Break
Gerd Kayser - Mo 25.02.13 01:05
Wäre nicht der Einsatz eines Profilers sinnvoll? Dann sieht man doch, wo die Rechenzeit verplempert wird.
GURKE deluxe - Di 26.02.13 21:28
Ralf Jansen hat folgendes geschrieben : |
Tastaturshortcut wäre Ctrl+Alt+Break |
Danke, nach sowas hatte ich gesucht :)
Die erweiterten Einstellungen waren bereits aktiviert, dennoch gibt es dort im Debugging-Menü kein Break-All-Feld...
Gerd Kayser hat folgendes geschrieben : |
Wäre nicht der Einsatz eines Profilers sinnvoll? Dann sieht man doch, wo die Rechenzeit verplempert wird. |
Theoretisch schon, aber wenn das Programm an sich ohne große Problem läuft und dann plötzlich die 100-200 fache Rechenzeit benötigt, so ist die Wahrscheinlichkeit, dass ich beim Breaken den richtigen Punkt treffe doch schon relativ groß ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!