![]() |
Bedingte Schleifenunterbrechung im Debugger
Hallo!
Gibt es im Delphi-Debugger eine Möglichkeit, eine Variable automatisch auf einen bestimmten Wert zu überwachen und dann an einem Breakpoint zu halten? Hintergrund ist: Ich habe eine Schleife mit vielen Durchläufen, wo ein Fehler erst beim Eintreten eines bestimmten Zustands auftritt. Der Zustand ist nicht an den Schleifenzähler geknüpft sondern mehr oder weniger zufällig. Wenn ich nun innerhalb der Schleife einen Breakpoint setze, muss ich evtl. 10000x F9 drücken und die Variable manuell prüfen bis die Bedingung erfüllt ist. Bisher habe ich das immer mit einem zusätzlichen
Delphi-Quellcode:
-Block gemacht und dann darin den Breakpoint gesetzt. In normalen EXEn mag das noch praktikabel sein, bei Dienst-DLLs wirds aber schon nervig. Das Kriterium ist relativ komplex, sodass ich viele verschiedene Variablen im Debugger ändern müsste um das zu reproduzieren. Wäre sehr umständlich.
if Variable = Kriterium then MacheNichts()
Besser bzw. eleganter fände ich es, wenn ich einen "bedingten Breakpoint" setzen könnte, bei dem nur gehalten wird wenn Variable = Kriterium ist und der Debugger für mich die Variable prüft. Gibts so etwas? Grüße Cody |
AW: Bedingte Schleifenunterbrechung im Debugger
Break-Point setzen, rechte Maustaste auf den Punkt und "Eigenschaften des Haltepunkts..."
|
AW: Bedingte Schleifenunterbrechung im Debugger
.. ist nicht das was Du suchst unter Breakpoint Properties zu finden
und dann Condition? Grüße Klaus |
AW: Bedingte Schleifenunterbrechung im Debugger
Wie die anderen schon geschrieben haben, Break-Point Eigenschaften im Gutter links neben dem Editor.
ABER: Der Debugger wird dann ggf. sehr, sehr, sehr langsam. Wenn es um richtig viele Iterationen geht, dann habe ich manchmal einen weiteren "Trick" genutzt (unter Win32).
Delphi-Quellcode:
Dann stoppt der Debugger automatisch. Vor Release entfernen ;-)
....
if x = 100000 then asm int 3 end; .... ...:cat:... |
AW: Bedingte Schleifenunterbrechung im Debugger
Hallo,
Zitat:
Du könntest Dein if auch per $I als INC-Datei eintragen. |
AW: Bedingte Schleifenunterbrechung im Debugger
Zitat:
In solchen Momenten frag ich mich immer, was die IDE noch so alles kann was man nur nicht weiß weil irgendwo tief drin versteckt. |
AW: Bedingte Schleifenunterbrechung im Debugger
Zitat:
|
AW: Bedingte Schleifenunterbrechung im Debugger
Zitat:
Conditional breakpoints finde ich bei komplexen Situationen nicht immer hilfreich, - die sind langsam (nur mal gefühlt), - umständlicher zu setzen/definieren, - die beeinflussen irgendwie den Code- und Timingablauf (wer weiss was der Debugger da genau macht), etc. |
AW: Bedingte Schleifenunterbrechung im Debugger
Sagen wir mal so: 25 Jahre kam ich ohne aus. Aber es gibt halt seltene Situationen wo man solche Werkzeuge eben doch brauchen kann.
BTW/OT: Ich hab grad mal in der Erinnerungskiste gekramt und festgestellt, dass es wirklich fast auf den Tag genau 25 Jahre sind. Mist verdammter, ich werd alt :x |
AW: Bedingte Schleifenunterbrechung im Debugger
Zitat:
Delphi-Quellcode:
einfügen, Breakpoint setzen, neu compilieren und starten, kurz warten. Das kann gerne mal eine halbe Stunde einsparen.
if bedingung then
asm nop end; // <- Breakpoint hier |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz