Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Probleme beim Debuggen - hat ggf jemand eine Erklärung für mich? (https://www.delphipraxis.net/194057-probleme-beim-debuggen-hat-ggf-jemand-eine-erklaerung-fuer-mich.html)

bytecook 12. Okt 2017 11:28

Probleme beim Debuggen - hat ggf jemand eine Erklärung für mich?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,

stehe heute vor einem seltsamen Problem. Vielleicht kann mir hier wer weiterhelfen. Ich debugge eine Unit meines Programmes (Delphi 10.2 Update 1),
im Debugger werden Werte scheinbar "wegoptimiert", Haltepunkte werden "ausgegrünt" . Die Routine selbst ist im "Protected" Teil einer Klasse, weder inline noch virtual deklariert.
Compilerflags in der Unit sind derzeit nicht gesetzt.

Die Routine selbst liefert einen neuen Bezeichner für einen Stringpräfix zurück. Leider läuft diese Routine im Moment ins Leere, wie der angehängte Screenshot zeigt.

Sowohl der Integer- als auch der Stringwert werden nicht gesetzt.

Weiß jemand von euch, was es damit auf sich haben könnte?

Code:
(******************************************************************************)
function TSVFXLayoutManager.NewControlName (ANamePrefix : String) : String;

  var ATmpName   : String;
      AId        : Integer;

  begin
    (** Standardprefix setzen, falls ANamePrefix leer ist **)
    if ANamePrefix = '' then ANamePrefix := 'Control';

    AId     := 1;
    ATmpName := format('%s%d', [ANamePrefix, AId]);
    while Assigned(FindControlByName(ATmpName)) do begin
      Inc(AId);
      ATmpName := format('%s%d', [ANamePrefix, AId]);
    end;
    Result := ATmpName;
  end;
(******************************************************************************)
function TSVFXLayoutManager.FindControlByName (Const AName : String) : TSVFXVisualControl;

  var i : integer;

  begin
    Result := Nil;
    if fControls.Count > 0 then begin
      for i := 0 to pred(fControls.Count) do begin
        if AnsiUpperCase(TSVFXVisualControl(fControls[i]).Name) = AnsiUpperCase(AName) then begin
          Result := fControls[i];
          Break;
        end;
      end;
    end;
  end;
(******************************************************************************)

sakura 12. Okt 2017 11:29

AW: Probleme beim Debuggen - hat ggf jemand eine Erklärung für mich?
 
Starte Delphi einfach neu, hier hat sich der Debugger einfach komplett verfahren. Das passiert hin und wieder.

...:cat:...

himitsu 12. Okt 2017 11:37

AW: Probleme beim Debuggen - hat ggf jemand eine Erklärung für mich?
 
Siehe links die blauen Punkte: Die Zeilen in der Debuginfo liegen 4 Zeilen weiter unten, als die zugehörigen Zeilen in der Unit.

mögliche Gründe:
* Debugger dreht durch (siehe sakura) ... alles neu Erstellen und vorher eventuell alle DCUs löschen hilft auch manchmal (FullBuild anstatt Compile)
* falsche PAS zum Compilat (EXE und/oder DCU) ... falsche Suchpfade?
* komische Zeichen im Code (manchmal passiert es, dass der Compiler Zeilenumbrüche nicht richtig erkennt und dann falsch zählt)
* ein Bug im Compiler/Linker/Debugger
* oder Anderes

bytecook 12. Okt 2017 11:39

AW: Probleme beim Debuggen - hat ggf jemand eine Erklärung für mich?
 
Zitat:

Zitat von sakura (Beitrag 1383160)
Starte Delphi einfach neu, hier hat sich der Debugger einfach komplett verfahren. Das passiert hin und wieder.

...:cat:...

Hallo Sakura,

leider hat weder ein Programm- sowie ein Systemneustart etwas gebracht. Das Problem blieb erhalten. Ich kann nur einen Breakpoint bei der Zeile "AId := 1;" setzen, beim Durchsteppen
wird der Einser dem Integerwert jedoch nicht zugewiesen. Auch der String wird mittels Format nicht erzeugt. Hmmm, wirklich schräg.

bytecook 12. Okt 2017 11:42

AW: Probleme beim Debuggen - hat ggf jemand eine Erklärung für mich?
 
Zitat:

Zitat von himitsu (Beitrag 1383162)
Siehe links die blauen Punkte: Die Zeilen in der Debuginfo liegen 4 Zeilen weiter unten, als die zugehörigen Zeilen in der Unit.

mögliche Gründe:
* Debugger dreht durch (siehe sakura) ... alles neu Erstellen und vorher eventuell alle DCUs löschen hilft auch manchmal (FullBuild anstatt Compile)
* falsche PAS zum Compilat (EXE und/oder DCU) ... falsche Suchpfade?
* komische Zeichen im Code (manchmal passiert es, dass der Compiler Zeilenumbrüche nicht richtig erkennt und dann falsch zählt)
* oder Anderes

Hallo Himitsu,

ich werde (noch)mal alle zugehörigen DCUs löschen, Suchpfade durchgehen, sowie auf gleichnamige PAS Dateien überprüfen. Danke für die Tipps an alle!

sakura 12. Okt 2017 11:43

AW: Probleme beim Debuggen - hat ggf jemand eine Erklärung für mich?
 
Zitat:

Zitat von himitsu (Beitrag 1383162)
* komische Zeichen im Code (manchmal passiert es, dass der Compiler Zeilenumbrüche nicht richtig erkennt und dann falsch zählt)

Der ist auf jeden Fall interessant. Kann zB durch kopieren aus Webseiten passieren.

...:cat:...

TiGü 12. Okt 2017 11:58

AW: Probleme beim Debuggen - hat ggf jemand eine Erklärung für mich?
 
Die Unit in Notepad++ öffnen und per Bearbeiten -> Format Zeilenende mal auf Unix/Mac stellen und dann zurück auf Windows und abspeichern.

bytecook 12. Okt 2017 12:49

AW: Probleme beim Debuggen - hat ggf jemand eine Erklärung für mich?
 
Zitat:

Zitat von TiGü (Beitrag 1383167)
Die Unit in Notepad++ öffnen und per Bearbeiten -> Format Zeilenende mal auf Unix/Mac stellen und dann zurück auf Windows und abspeichern.

Ja, das hat geholfen, vielen Dank an alle.

Hatte jedenfalls vorher den Verdacht, dass ggf eine "falsche" Version zum Problem führte, und wäre selber nie auf die Idee mit NP++ gekommen.

Vorab hatte ich noch folgenden Schritt versucht, um etwaige "Leichenverweise" ausschließen zu können:

Kurzerhand in die geöffnete Unit eine neue Routine eingebaut, und diese versucht, aufzurufen. Die Routine führt einfach ein ShowMessage aus, das tat diese auch, aber
einen Breakpoint konnte ich wieder nicht setzen. Das schloss aus, dass eine Kopie der Unit das Problem verursachte. Werde mal die vorher gesicherte Unit mit der "geunixten" Datei
vergleichen, und dann auch alle übrigen Units untersuchen. Man weiß ja nie...


Gruß,

Peter

Sherlock 12. Okt 2017 14:35

AW: Probleme beim Debuggen - hat ggf jemand eine Erklärung für mich?
 
Die einfachere Lösung für das "Sonderzeichen Problem" ist einfach den eingebauten Formatter zu benutzen. Das macht man ja ohnehin regelmäßig...

Sherlock

bytecook 12. Okt 2017 15:33

AW: Probleme beim Debuggen - hat ggf jemand eine Erklärung für mich?
 
Zitat:

Zitat von Sherlock (Beitrag 1383181)
Die einfachere Lösung für das "Sonderzeichen Problem" ist einfach den eingebauten Formatter zu benutzen. Das macht man ja ohnehin regelmäßig...

Sherlock

Nur wenn man mit dem verwendeten Format was anfangen kann.Ich konnte den bis heute nicht dazu bringen, unsere Formatiergewohnheiten zu übernehmen.
Wenn mal wieder mehr Zeit dafür ist, also gefühlt so um 2078 rum, probieren wir es damit nochmal...


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 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