| Autor |
Beitrag |
Knulli
      
Beiträge: 116
Erhaltene Danke: 2
Win2k, Win7, Win10
D5, D2005, D2006, D2007, D10.4.2
|
Verfasst: Di 02.12.08 18:23
Hi Leute,
beim Debuggen von Anwendungen, wo mehrere Threads gleichzeitig laufen, komme ich mit dem Debugger irgendwie nicht klar.
Ich mache z.B. einen Breakpoint und will ab da mit StepInto/StepOver ( F7/F8 ) weitermachen. Dabei lande ich aber nicht zwangsläufig auf der nächsten Anweisung, sonder oft auf irgendwelchen anderen Anweisungen in irgendwelchen anderen Modulen, die irgendein anderer Thread gerade abarbeiten will.
Kann ich Delphi nicht dazu bringen, nur innerhalb des aktuellen Threads zu "Steppen" solange bis ich auf F9 drücke??
Dieses hin und herspringen ist total nervig und es ist fast unmöglich vernünftig zu debuggen.
Knulli
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Di 02.12.08 20:55
Das würde aber nicht dem echten Programmablauf entsprechen. Sperre die anderen Threads, wenn sie denn nichts sinnvolles machen.
_________________ Na denn, dann. Bis dann, denn.
|
|
Knulli 
      
Beiträge: 116
Erhaltene Danke: 2
Win2k, Win7, Win10
D5, D2005, D2006, D2007, D10.4.2
|
Verfasst: Mi 03.12.08 12:58
Ist ja richtig, ich will die anderen Threads auch gar nicht an ihrer Abarbeitung hindern. Wenn ich F7 / F8 mache, können (und sollen) sie zwischendurch arbeiten dürfen, weil sonst im zu untersuchenden Thread bestimmte Bedingungen evtl. gar nicht vorhanden sind.
Ich will halt nur beim Deguggen im aktuellen Thread bleiben, denn idR. interessiert mich nur der Thread, wo der Breakpoint angehalten hat.
Manchmal ist dieses springende Verhalten ja auch vielleicht erwünscht (z.B. von zwei verschiedenen Threads wird der selbe Code ausgeführt). Das würde ich ja akzeptieren. Aber wenn zwei verschiedene Threads zwei verschiedene Funktionen ausführen, will ich nicht bei F7 / F8 wahllos hin- und herspringen.
Geht das irgendwo ein/auszuschalten?
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 03.12.08 13:48
Nun ja, F7/F8 springen nunmal zur nächsten Anweisung, die ausgeführt wird, und das ist eben die im anderen Thread. Ob man das Verhalten ändern kann weiß ich nicht (ich brauchte das auch nie bei der Arbeit mit Threads), aber du könntest einfach in jede Zeile deines Threads einen Haltepunkt setzen und dann F9 benutzen.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 12.12.08 21:57
Du kannst über Ansicht --> Debug-Fenster --> Threads die Liste der Threads deines Prozesses aufrufen. Wenn Du hier einen setzt, könnte das was helfen (ungetestet).
Von Eclipse bin ich das Verhalten beim Thread-Debugging aber auch eher so gewohnt, dass man mit StepInto\StepOver im gleichen Thread bleibt und entweder explizit den Thread wechseln muss oder mit Run die Programmausführung fortsetzen muss, um in einen anderen Thread zu gelangen ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
|