Autor |
Beitrag |
GURKE deluxe
Beiträge: 91
Erhaltene Danke: 1
Win 7 Home Premium x64, Win XP Home Edition v2002
C# Microsoft Visual C# 2010 Express
|
Verfasst: So 24.02.13 15:51
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
Beiträge: 4764
Erhaltene Danke: 1052
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: 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
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: 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...
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
GURKE deluxe
Beiträge: 91
Erhaltene Danke: 1
Win 7 Home Premium x64, Win XP Home Edition v2002
C# Microsoft Visual C# 2010 Express
|
Verfasst: 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.
Einloggen, um Attachments anzusehen!
|
|
jaenicke
Beiträge: 19273
Erhaltene Danke: 1740
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
Beiträge: 4701
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: So 24.02.13 23:03
Tastaturshortcut wäre Ctrl+Alt+Break
Für diesen Beitrag haben gedankt: GURKE deluxe
|
|
Gerd Kayser
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mo 25.02.13 01:05
Wäre nicht der Einsatz eines Profilers sinnvoll? Dann sieht man doch, wo die Rechenzeit verplempert wird.
|
|
Ralf Jansen
Beiträge: 4701
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 25.02.13 16:28
Ich habe gerade gelernt das man bei einem Teil der Express Versionen zwischen Basic und Erweiterten Einstellungen umschalten kann. Eventuell gehört "Break All" auch zu den Einstellungen die in diesen Versionen erstmal ausgeblendet sind.
|
|
GURKE deluxe
Beiträge: 91
Erhaltene Danke: 1
Win 7 Home Premium x64, Win XP Home Edition v2002
C# Microsoft Visual C# 2010 Express
|
Verfasst: Di 26.02.13 21:28
|
|