AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Haltepunkt Eigenschaften

Ein Thema von kagi3624 · begonnen am 2. Okt 2020 · letzter Beitrag vom 2. Okt 2020
Antwort Antwort
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#1

Haltepunkt Eigenschaften

  Alt 2. Okt 2020, 11:09
Hallo! Kann man den Haltenpunkt so setzen, dass man genau dann hält, wenn die Variable in dieser Zeile einen ganz bestimmten Wert annimmt? Es ist eine Schleife und wenn ich auf den Haltepunkt mit rechts klicke und auf die Eigenschaften gehe, kann man da nur die Durchläufe einstellen.

Ich habe Delphi 6.

Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

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

AW: Haltepunkt Eigenschaften

  Alt 2. Okt 2020, 12:12
Hallo! Kann man den Haltenpunkt so setzen, dass man genau dann hält, wenn die Variable in dieser Zeile einen ganz bestimmten Wert annimmt? Es ist eine Schleife und wenn ich auf den Haltepunkt mit rechts klicke und auf die Eigenschaften gehe, kann man da nur die Durchläufe einstellen.

Ich habe Delphi 6.
Rechtsklick auf den Breakpoint -> Breakpoint Properties -> Advanced
Dort dann eine Eval expression eintragen:

Variable=Wert

Darf auch komplexer sein.

Das Problem dabei ist, das bei jedem Durchlauf diese Expression ausgewertet wird, was den Debugger extrem verlangsamt. Deshalb füge ich im Code lieber sowas ein:

Delphi-Quellcode:
if Variable=Wert then
  asm nop end;
und setze den Breakpoint auf die asm-Zeile.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Haltepunkt Eigenschaften

  Alt 2. Okt 2020, 15:38
Inline-Assembler gibt es nur noch im Win32-Compiler, außerdem geht es auch kürzer/einfacher.
Ich nehm da einfach immer ein Sleep(0); (früher Beep; ), um dort meinen Haltepunkt draufzulegen, was meistens geht da dies nötige Unit oft vorhanden ist.

asm int 3; end; oder MSDN-Library durchsuchenDebugBreak kann/konnte man auch verwenden ... das ist dann ein "programmierter" Haltepunkt,
aber Achtung, "int 3" im Programm, ohne dass ein Debugger aktiv ist, und es knallt.
Drum macht DebugBreak; intern ein if IsDebuggerPresent then asm int 3 end; .
$2B or not $2B
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#4

AW: Haltepunkt Eigenschaften

  Alt 2. Okt 2020, 15:46
Inline-Assembler gibt es nur noch im Win32-Compiler,
was bei Delphi 6 ja gegeben sein dürfte.
Delphi-Quellcode:
if Variable = Wert then
  Variable := Variable;
Keine Gedanken darüber, ob passende Unit vorhanden / eingebunden ist oder nicht, kein Gedanke darüber ob int 3 zu 'nem Fehler führen könnte, kein Gedanke darüber, ob's der Compiler noch kann oder nicht
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

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

AW: Haltepunkt Eigenschaften

  Alt 2. Okt 2020, 16:44
Drum macht DebugBreak; intern ein if IsDebuggerPresent then asm int 3 end; .
Hm:
DebugBreak:
Zitat:
If the process is not being debugged, the function uses the search logic of a standard exception handler. In most cases, this causes the calling process to terminate because of an unhandled breakpoint exception.
Ist aber trotzdem ein guter Hinweis.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

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

AW: Haltepunkt Eigenschaften

  Alt 2. Okt 2020, 16:46
Inline-Assembler gibt es nur noch im Win32-Compiler, außerdem geht es auch kürzer/einfacher.
Ich nehm da einfach immer ein Sleep(0); (früher Beep; ), um dort meinen Haltepunkt draufzulegen, was meistens geht da dies nötige Unit oft vorhanden ist.
Der Vorteil der Assembler-Zeile ist, dass sie sofort als Debug-Code auffällt, im Gegensatz zu einem Beep oder Sleep, welches ja auch normaler Code sein könnte. Aber stimmt, Inline Assembler gibt es nur für Win32, auf der anderen Seite ging es ja explizit um Delphi 6.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Haltepunkt Eigenschaften

  Alt 2. Okt 2020, 17:07
Mir war so, dass dort sowas drin war.

Aber ich verwende diese Funktion auch nicht mehr, denn sie hat einen blöden Nachteil:
Der Debugger hält in dieser Funktion und nicht dort, wo sie aufgerufen wurde, was schon ä bissl nevig ist.

Zitat:
In most cases, this causes the calling process to terminate because of an unhandled breakpoint exception
Die VCL und (leider) auch TThread fangen unbehandelte Exceptions ab, drum würde da meistens nicht gleich alles verrecken.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:37 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