Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Debugger - Befehlzeile nicht ausführen (https://www.delphipraxis.net/189408-debugger-befehlzeile-nicht-ausfuehren.html)

Pfaffe 9. Jun 2016 14:12

Debugger - Befehlzeile nicht ausführen
 
Ist es möglich, während des debuggens eine Befehlszeile zu überspringen ohne das diese ausgeführt wird, also so als wäre sie bereits vor dem compilieren auskommentiert worden.

stahli 9. Jun 2016 14:45

AW: Debugger - Befehlzeile nicht ausführen
 
Nicht dass ich wüsste, aber wenn die Zeile nur eine einfache Änderung vornimmt (z.B. Inc(I)) könnte man I nach der Ausführung wieder auf den vorherigen Wert zurück setzen.

Wenn Du für Testzwecke die Zeile mal ausführen willst und mal nicht, könntest Du eine globale Variable anlegen
Delphi-Quellcode:
var gCallLine: Boolean = True;

die Zeile kapseln
Delphi-Quellcode:
if gCallLine then
begin
  Inc(I);
end;
und zur Debugtime gCallLine überschreiben.

Vielleicht taugt das als Notlösung.

Der schöne Günther 9. Jun 2016 14:52

AW: Debugger - Befehlzeile nicht ausführen
 
Dass man den Code-Teil anpassen kann wäre mir neu.
Absolute Hardcore-Profis können bestimmt den Stack lesen und entsprechend manipulieren, aber eingebaut habe ich noch nie etwas gesehen.

himitsu 9. Jun 2016 15:38

AW: Debugger - Befehlzeile nicht ausführen
 
Man kann natürlich in der CPU-Ansicht den EIP ändern und auf eine andere "Code"-Stelle setzen. :stupid: (Strg+N, siehe Kontextmenü)

Ich war mir fast sicher, daß sowas auch sich des Quellcodes ging.
Aber im Notfall einfach ein
Delphi-Quellcode:
if EineVariable then
und im Debugger kannst du ja den Varriableninhalt ändern.

Oder meinst du sowas wie
Delphi-Quellcode:
if not IsDebuggerPresent then
, was den Code nicht ausführt, wenn es im Debugger läuft ?
MSDN-Library durchsuchenIsDebuggerPresent

TiGü 9. Jun 2016 16:27

AW: Debugger - Befehlzeile nicht ausführen
 
Natürlich ist das möglich!
Und zwar seit irgendeiner Version von Delphi XE.

Du kannst während des Debuggens den kleinen blauen Pfeil, der die aktuelle Zeile anzeigt, mit dem Mauszeiger anfassen (linke Maustaste).
Dann kannst du den Pfeil per Drag'n'Drop auf eine Zeile, die ebenfalls blaue "Debugpunkte" hat, verschieben.
Die Programmausführung fährt dann an dieser Stelle fort.

So kannst du auch einzelne Zeilen oder ganze Abschnitte überspringen.

himitsu 9. Jun 2016 16:41

AW: Debugger - Befehlzeile nicht ausführen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ohh stimmt, also hier in XE(1).
Mal was Neues. :shock:

Im Kontextmenü gibt es was, auch wenn es hier irgendwie immer deaktiviert ist.

Der schöne Günther 9. Jun 2016 16:55

AW: Debugger - Befehlzeile nicht ausführen
 
Zitat:

Zitat von TiGü (Beitrag 1339843)
Natürlich ist das möglich!

Wahnsinn, das war mir vollkommen neu. Cool!

dummzeuch 9. Jun 2016 20:02

AW: Debugger - Befehlzeile nicht ausführen
 
Zitat:

Zitat von TiGü (Beitrag 1339843)
Und zwar seit irgendeiner Version von Delphi XE.

Du kannst während des Debuggens den kleinen blauen Pfeil, der die aktuelle Zeile anzeigt, mit dem Mauszeiger anfassen (linke Maustaste).
Dann kannst du den Pfeil per Drag'n'Drop auf eine Zeile, die ebenfalls blaue "Debugpunkte" hat, verschieben.
Die Programmausführung fährt dann an dieser Stelle fort.

Vorher ging das auch schon per Editor-Kontextmenu -> Debug -> Set Next Statement (seit Delphi 2006).

Und davor gab es im Kontextmenu des CPU-Windows die Set EIP Funktion. Dazu sollte man die Mixed Ansicht (also ASM + Sourcecode) einschalten, damit man weiss, wo eine Sourcecodezeile anfaengt..

TiGü 10. Jun 2016 08:45

AW: Debugger - Befehlzeile nicht ausführen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1339846)
Zitat:

Zitat von TiGü (Beitrag 1339843)
Natürlich ist das möglich!

Wahnsinn, das war mir vollkommen neu. Cool!

Mega geil, oder?
Habe ich auch erst letzten Herbst zufällig entdeckt.
Erleichtert das Leben enorm.

Sherlock 10. Jun 2016 10:14

AW: Debugger - Befehlzeile nicht ausführen
 
Und ich hab da immer ein
Delphi-Quellcode:
if DebugHook <> 0
reingefummelt...

Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 Uhr.
Seite 1 von 2  1 2      

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