AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Bedingte Schleifenunterbrechung im Debugger
Thema durchsuchen
Ansicht
Themen-Optionen

Bedingte Schleifenunterbrechung im Debugger

Ein Thema von Codehunter · begonnen am 30. Okt 2019 · letzter Beitrag vom 30. Okt 2019
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Bedingte Schleifenunterbrechung im Debugger

  Alt 30. Okt 2019, 10:54
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 if Variable = Kriterium then MacheNichts() -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.

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
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (30. Okt 2019 um 10:58 Uhr)
  Mit Zitat antworten Zitat
DasWolf

Registriert seit: 7. Jun 2016
75 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Bedingte Schleifenunterbrechung im Debugger

  Alt 30. Okt 2019, 11:04
Break-Point setzen, rechte Maustaste auf den Punkt und "Eigenschaften des Haltepunkts..."
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Bedingte Schleifenunterbrechung im Debugger

  Alt 30. Okt 2019, 11:07
.. ist nicht das was Du suchst unter Breakpoint Properties zu finden
und dann Condition?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Bedingte Schleifenunterbrechung im Debugger

  Alt 30. Okt 2019, 11:17
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:
....

if x = 100000 then
  asm int 3 end;

....
Dann stoppt der Debugger automatisch. Vor Release entfernen

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Bedingte Schleifenunterbrechung im Debugger

  Alt 30. Okt 2019, 11:23
Hallo,
Zitat:
Das Kriterium ist relativ komplex
Ich benutze auch einen leeren if Block, weil der Debugger bei komplexen überwachten Ausdrücken immer langsamer wird.
Du könntest Dein if auch per $I als INC-Datei eintragen.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Bedingte Schleifenunterbrechung im Debugger

  Alt 30. Okt 2019, 12:05
Break-Point setzen, rechte Maustaste auf den Punkt und "Eigenschaften des Haltepunkts..."
Geile Sache. Das ist mal wieder so ein Fall von Kopf klatscht auf Tischplatte 25 Jahre Delphi und dieses Fenster hab ich noch nie gesehen... (kein Witz!)

In solchen Momenten frag ich mich immer, was die IDE noch so alles kann was man nur nicht weiß weil irgendwo tief drin versteckt.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.995 Beiträge
 
Delphi 12 Athens
 
#7

AW: Bedingte Schleifenunterbrechung im Debugger

  Alt 30. Okt 2019, 12:17
In solchen Momenten frag ich mich immer, was die IDE noch so alles kann was man nur nicht weiß weil irgendwo tief drin versteckt.
Dann klapp das besagte Fenster mal über den Button Weitere >> auf...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.901 Beiträge
 
Delphi 12 Athens
 
#8

AW: Bedingte Schleifenunterbrechung im Debugger

  Alt 30. Okt 2019, 12:23
Zitat:
Bisher habe ich das immer mit einem zusätzlichen if Variable = Kriterium then MacheNichts() -Block gemacht
Was ist denn daran so verkehrt ?
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.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Bedingte Schleifenunterbrechung im Debugger

  Alt 30. Okt 2019, 12:38
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
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.465 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Bedingte Schleifenunterbrechung im Debugger

  Alt 30. Okt 2019, 12:43
Conditional breakpoints finde ich bei komplexen Situationen nicht immer hilfreich,
- die sind langsam (nur mal gefühlt),
Nicht nur gefühlt. Ich habe schon häufig einen Debug-Lauf abgebrochen, weil er durch bedingte Breakpoints so langsam wurde, dass es einfach unpraktikabel war weiterzumachen. Abbrechen,
Delphi-Quellcode:
if bedingung then
  asm nop end; // <- Breakpoint hier
einfügen, Breakpoint setzen, neu compilieren und starten, kurz warten. Das kann gerne mal eine halbe Stunde einsparen.
Thomas Mueller
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz