Bedingter Haltepunkt.

Für Fragen rund um die Ide und zum Debugger

Re: Bedingter Haltepunkt.

Beitragvon fliegermichl » 14. Mai 2019, 12:20 Re: Bedingter Haltepunkt.

Nee klappt irgendwie nicht.

Ich hab in meinem Testprogrämmelchen eine Methode Testename : boolean deklariert. Die prüft die Bedingung und gibt entsprechend true oder false zurück.

Wenn ich im gdb b unit1.pas:46 if testename
eingebe, dann meckert er:
Code: Alles auswählen
 
warning: can't find linker symbol for virtual table for `TFORM1' value
Error in testing breakpoint condition:
Cannot take address of method TESTENAME
 


Wenn ich testename als einfache Function deklariere, dann hält er einfach an ohne Fehlermeldung und ohne testename aufzurufen.
Mein Fazit ist ehrlich gdb ist Mist.
In meinem uralten Delphidebugger kann ich "Funktionsaufrufe erlauben" anklicken und praktische jede Methode oder procedure oder function in der Bedingung aufrufen.
Ich kann jede Property / Variable usw. einsehen und auch "on the fly" ändern.
fliegermichl
Lazarusforum e. V.
 
Beiträge: 395
Registriert: 9. Jun 2011, 09:42

Beitragvon Dee » 14. Mai 2019, 12:36 Re: Bedingter Haltepunkt.

@fliegermichl

Vielleicht hilft dir folgendes weiter:

Accessing a symbol in a specific unit unitname.identifier
http://wiki.freepascal.org/Debugging_-_GDB_tricks#Accessing_a_symbol_in_a_specific_unit_unitname.identifier

Vielleicht kann man damit auch eigene Funktionen einbinden und aufrufen.

-- Dee
Dee
 
Beiträge: 46
Registriert: 10. Jul 2014, 20:56
OS, Lazarus, FPC: Windows 10 Pro, Lazarus 2.0.2, FPC 3.0.4 | 
CPU-Target: Ryzen 5 2500, 64-Bit
Nach oben

Beitragvon Frank Ranis » 16. Mai 2019, 14:21 Re: Bedingter Haltepunkt.

Hi,

habe auch rumprobiert und mit einfachen Prüf-Variablen wie (Integer, Char oder Boolean) funzt die Haltebedingung ja gut.

Und dann habe ich mir was mit Boolean gebaut.

Gruß

Frank

Code: Alles auswählen
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
 lazutf8;
 
type
 
 { TForm1 }
 
 TForm1 = class(TForm)
   Edit1: TEdit;
  procedure Edit1Change(Sender: TObject);
 private
 public
 end;
 
var
 Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Edit1Change(Sender: TObject);
var check1,check2,check3,check4:boolean;
begin
 // man macht sich hier ein paar Bedingungen und legt diese auf die
 // Boolean-Variablen check1 ... check4
 check1:=Edit1.text='blabla1';
 check2:=Edit1.text='blabla2';
 check3:=Edit1.text='blabla3';
 check4:=Edit1.text='blabla4';
 
 // Die Haltepunktbedingung ist dann schlicht 'check1=true' oder noch einfacher 'check1'
 sleep(0)// Hier anhalten , wenn edit1.text='blabla1' , Haltepunkt-Bedingung 'check1=true'
 sleep(0)// Hier anhalten , wenn edit1.text='blabla2' , Haltepunkt-Bedingung 'check2=true'
 sleep(0)// Hier anhalten , wenn edit1.text='blabla3' , Haltepunkt-Bedingung 'check3=true'
 sleep(0)// Hier anhalten , wenn edit1.text='blabla4' , Haltepunkt-Bedingung 'check4=true'
end;
 
end.
 


Äh ,doof , im Highlighter sind die Haltepunkte nicht zu sehen.
Hier noch ein Bild .

Bild_Haltepunkte.png
www.flz-vortex.de
Frank Ranis
 
Beiträge: 152
Registriert: 24. Jan 2013, 22:22
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon martin_frb » 16. Mai 2019, 14:47 Re: Bedingter Haltepunkt.

Kurz gegoogled:
https://sourceware.org/gdb/current/onli ... ience-Funs

$_streq(^char(a), "abccc")
martin_frb
 
Beiträge: 451
Registriert: 25. Mär 2009, 22:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other | 
CPU-Target: mostly 32 bit
Nach oben

Beitragvon fliegermichl » 16. Mai 2019, 15:26 Re: Bedingter Haltepunkt.

martin_frb hat geschrieben:Kurz gegoogled:
https://sourceware.org/gdb/current/onli ... ience-Funs

$_streq(^char(a), "abccc")


Geht leider auch nicht. Der GDB bleibt auch dann stehen wenn ein anderer Inhalt in a steht.
fliegermichl
Lazarusforum e. V.
 
Beiträge: 395
Registriert: 9. Jun 2011, 09:42

Beitragvon martin_frb » 16. Mai 2019, 16:29 Re: Bedingter Haltepunkt.

Ging bei mir...

1) Dwarf. (32bit ist default stabs.)

2) Getestet mit gdb 8.2 (Auf der Lazarus Sourceforge Seite)
martin_frb
 
Beiträge: 451
Registriert: 25. Mär 2009, 22:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other | 
CPU-Target: mostly 32 bit
Nach oben

Beitragvon Dee » 20. Mai 2019, 02:40 Re: Bedingter Haltepunkt.

martin_frb hat geschrieben:Ging bei mir...

1) Dwarf. (32bit ist default stabs.)

2) Getestet mit gdb 8.2 (Auf der Lazarus Sourceforge Seite)

Funktioniert bei mir nicht. Wie hast du es konkret gemacht?

Beschreibung der Funktion $_streq(str1, str2):

"Returns one if the strings str1 and str2 are equal. Otherwise it returns zero."

Bei UTF8CompareStr() wäre es ja genau umgekehrt.

Wenn ich es mit String-Konstanten im Debugger mit $_streq() ausprobiere, meckert er und meint, dass die Parameter einen unültigen Typ haben.

Edit: @Frank Ranis: Danke übrigens, für deinen Beitrag. Eine abgewandelte Form meiner Lösung, aber dennoch vielleicht hilfreich.

-- Dee
Dee
 
Beiträge: 46
Registriert: 10. Jul 2014, 20:56
OS, Lazarus, FPC: Windows 10 Pro, Lazarus 2.0.2, FPC 3.0.4 | 
CPU-Target: Ryzen 5 2500, 64-Bit
Nach oben

Beitragvon martin_frb » 20. Mai 2019, 11:13 Re: Bedingter Haltepunkt.

Die String Konstante, muss in double quotes. "abc"

Ich kann es nochmal genauer testen... Bin aber erst mal ein paar Tage weg.
martin_frb
 
Beiträge: 451
Registriert: 25. Mär 2009, 22:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other | 
CPU-Target: mostly 32 bit
Nach oben

Beitragvon martin_frb » 12. Okt 2019, 00:31 Re: Bedingter Haltepunkt.

OK wahrscheinlich bissel spät....

Aber

1) Übergibst Du direkt ne string (oder pchar) variable an $_streq() ?

Oder sowas wie in dem ersten Post: element^.name
Was ist element?
Gdb han manchmal Schwierigkeiten mit solchen Pointer derefs. Da kann es sein das er den Wert anzeigt, aber den Wert nicht weiter nutzen kann....

2) In svn trunk: fpDebug sollte jetzt String vergleiche können.
martin_frb
 
Beiträge: 451
Registriert: 25. Mär 2009, 22:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other | 
CPU-Target: mostly 32 bit
Nach oben

• Themenende •
Vorherige

Zurück zu Benutzung der IDE



Wer ist online?

Mitglieder in diesem Forum: Socke und 1 Gast

porpoises-institution
accuracy-worried