Autor Beitrag
GURKE deluxe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 91
Erhaltene Danke: 1

Win 7 Home Premium x64, Win XP Home Edition v2002
C# Microsoft Visual C# 2010 Express
BeitragVerfasst: 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 user profile iconTh69: Topic aus C# - Die Sprache verschoben am So 24.02.2013 um 15:22
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: 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 :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
GURKE deluxe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 91
Erhaltene Danke: 1

Win 7 Home Premium x64, Win XP Home Edition v2002
C# Microsoft Visual C# 2010 Express
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19273
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: So 24.02.13 23:03 
Tastaturshortcut wäre Ctrl+Alt+Break

Für diesen Beitrag haben gedankt: GURKE deluxe
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 91
Erhaltene Danke: 1

Win 7 Home Premium x64, Win XP Home Edition v2002
C# Microsoft Visual C# 2010 Express
BeitragVerfasst: Di 26.02.13 21:28 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
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...

user profile iconGerd Kayser hat folgendes geschrieben Zum zitierten Posting springen:
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ß ;)