Entwickler-Ecke
Programmierwerkzeuge - Debuggen von MultiThread-Anwendungen
Knulli - Di 02.12.08 18:23
Titel: Debuggen von MultiThread-Anwendungen
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 - 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.
Knulli - 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 - 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 - 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 ...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!