![]() |
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.
|
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:
und zur Debugtime gCallLine überschreiben.
if gCallLine then
begin Inc(I); end; Vielleicht taugt das als Notlösung. |
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. |
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:
und im Debugger kannst du ja den Varriableninhalt ändern.
if EineVariable then
Oder meinst du sowas wie
Delphi-Quellcode:
, was den Code nicht ausführt, wenn es im Debugger läuft ?
if not IsDebuggerPresent then
![]() |
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. |
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. |
AW: Debugger - Befehlzeile nicht ausführen
Zitat:
|
AW: Debugger - Befehlzeile nicht ausführen
Zitat:
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.. |
AW: Debugger - Befehlzeile nicht ausführen
Zitat:
Habe ich auch erst letzten Herbst zufällig entdeckt. Erleichtert das Leben enorm. |
AW: Debugger - Befehlzeile nicht ausführen
Und ich hab da immer ein
Delphi-Quellcode:
reingefummelt...
if DebugHook <> 0
Sherlock |
AW: Debugger - Befehlzeile nicht ausführen
Das ist in der Tat ein Feature, das nicht viele kennen. Ich habe die CPU-Ansicht standardmäßig eingeblendet beim Debuggen, da ist es am einfachsten so etwas zu benutzen.
Wenn man da allerdings einen Fehler macht, kann es auch passieren, dass man sich den Stack zerschießt. Vor allem, wenn man ein push oder pop so überspringt. Was auch nicht viele benutzen ist die Möglichkeit mit einem Haltepunkt einen anderen zu aktivieren oder zu deaktivieren. Wenn ich eine Codestelle debuggen möchte, die oft verwendet wird, kann ich den Haltepunkt deaktivieren und erst durch einen Haltepunkt aktivieren, der vorher angesprungen wird. Dann noch einen weiteren hinter den Code, der den Haltepunkt wieder deaktiviert und ich kann immer debuggen, wenn ich es möchte, aber ansonsten wird der Haltepunkt ignoriert. Die Haltepunkte zum umschalten sollten dafür natürlich auf "nicht anhalten" gestellt sein. |
AW: Debugger - Befehlzeile nicht ausführen
Das mit dem Überspringen geht schon seit Delphi 2010. Ich hatte damals noch 2009 benutzt und mich geärgert, dass ich dieses Feature nicht nutzen kann.
|
AW: Debugger - Befehlzeile nicht ausführen
Hallo zusammen,
ist nicht vielleicht das folgende gemeint?!?: rechte Maustaste-> Fehlersuche->nächste Anweisung setzen ... das ging übrigens schon in D2006 |
AW: Debugger - Befehlzeile nicht ausführen
Ich kam jetzt erst dazu die Lösungsvorschläge nachzuvollziehen. Beides funktioniert "Pfeil per Drag'n'Drop verschieben" und "rechte Maustaste-> Fehlersuche->nächste Anweisung".
Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 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