ZEOS und GDB: TZConnection.Connect hängt
-
- Beiträge: 61
- Registriert: Di 11. Sep 2007, 16:59
- OS, Lazarus, FPC: Ubuntu Maverick (L 0.9.28.2-10, FPC 2.4.0)
- CPU-Target: 32Bit
- Wohnort: Lage
- Kontaktdaten:
ZEOS und GDB: TZConnection.Connect hängt
Ich habe hier gerade einen lustigen Effekt: wenn ich in der IDE unter Options den GNU-Debugger einschalte (damit mein Programm an Breakpoints stoppt) dann bleibt es bei TZConnection.Connect hängen (Endlosschleife), schalte ich den Debugger hingegen auf (none), dann wird die Verbindung problemlos hergestellt und das Programm läuft weiter (aber leider stoppt die IDE nicht mehr an Breakpoints).
Hat jemand schon mal etwas ähnliches beobachtet und hat einen Workaround?
Datenbank ist eine nicht lokale MySQL5, ZEOSDBO hat die Version 6.6.5, eine Gegenprobe mit Lazarus 0.9.27b unter Intrepid zeigt denselben Fehler.
TIA, Dets ...
Hat jemand schon mal etwas ähnliches beobachtet und hat einen Workaround?
Datenbank ist eine nicht lokale MySQL5, ZEOSDBO hat die Version 6.6.5, eine Gegenprobe mit Lazarus 0.9.27b unter Intrepid zeigt denselben Fehler.
TIA, Dets ...
-
- Beiträge: 61
- Registriert: Di 11. Sep 2007, 16:59
- OS, Lazarus, FPC: Ubuntu Maverick (L 0.9.28.2-10, FPC 2.4.0)
- CPU-Target: 32Bit
- Wohnort: Lage
- Kontaktdaten:
Re: ZEOS und GDB: TZConnection.Connect hängt
Nachtrag: ein kleiner Codeschnipsel:
Code: Alles auswählen
var
Database: TZConnection;
begin
Database:=TZConnection.Create(nil);
Database.Protocol:='mysql-5';
Database.Database:='test';
Database.User:='root';
Database.Password:='root';
Database.HostName:='192.168.94.94';
writeln('Trying to connect ...');
Database.Connect;
writeln('Connected!');
-
- Beiträge: 131
- Registriert: Sa 5. Apr 2008, 17:57
- OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
- CPU-Target: 32Bit/64Bit
- Wohnort: Ulm
Re: ZEOS und GDB: TZConnection.Connect hängt
das hatte ich bislang noch nicht.
Wir arbeiten regelmässig mit dem Debugger und auch mit Zeos und MySQL.
Wie sieht es denn aus wenn Du eine Form in der IDE erzeugst und darauf die ZConnection zur Laufzeit legst und dann im Objekispektor die Parameter füllst und die ZConnection auf Active setzt?
Friert dann auch Alles ein?
Gruss,
Piper
Wir arbeiten regelmässig mit dem Debugger und auch mit Zeos und MySQL.
Wie sieht es denn aus wenn Du eine Form in der IDE erzeugst und darauf die ZConnection zur Laufzeit legst und dann im Objekispektor die Parameter füllst und die ZConnection auf Active setzt?
Friert dann auch Alles ein?
Gruss,
Piper
Re: ZEOS und GDB: TZConnection.Connect hängt
Ist da irgendwie Multithreading im Spiel?
-
- Beiträge: 61
- Registriert: Di 11. Sep 2007, 16:59
- OS, Lazarus, FPC: Ubuntu Maverick (L 0.9.28.2-10, FPC 2.4.0)
- CPU-Target: 32Bit
- Wohnort: Lage
- Kontaktdaten:
Re: ZEOS und GDB: TZConnection.Connect hängt
Ich musste grad mal die ZEOS-Komponenten installieren und Lazarus neu kompilieren ...piper62 hat geschrieben:Wie sieht es denn aus wenn Du eine Form in der IDE erzeugst und darauf die ZConnection zur Laufzeit legst und dann im Objekispektor die Parameter füllst und die ZConnection auf Active setzt?
Ergebnis: funktioniert. Die Daten werden im Grid angezeigt und auch Breakpoints lassen sich setzen!
Seltsam!
Dets ...
-
- Beiträge: 61
- Registriert: Di 11. Sep 2007, 16:59
- OS, Lazarus, FPC: Ubuntu Maverick (L 0.9.28.2-10, FPC 2.4.0)
- CPU-Target: 32Bit
- Wohnort: Lage
- Kontaktdaten:
Re: ZEOS und GDB: TZConnection.Connect hängt
Nein, der Fehler tritt auch auf, wenn du einfach eine neue Konsolenanwendung erzeugst und meinen Codeschnipsel in "DoRun" kopierst.theo hat geschrieben:Ist da irgendwie Multithreading im Spiel?
Dets ...
-
- Beiträge: 61
- Registriert: Di 11. Sep 2007, 16:59
- OS, Lazarus, FPC: Ubuntu Maverick (L 0.9.28.2-10, FPC 2.4.0)
- CPU-Target: 32Bit
- Wohnort: Lage
- Kontaktdaten:
Re: ZEOS und GDB: TZConnection.Connect hängt
Neue Erkenntnisse:
der Fehler tritt nur in einem Konsolenprogramm auf - wenn ich meinen Codeschnipsel in eine Lazarus-Application einbaue, dann funktionierts.
Dets ...
der Fehler tritt nur in einem Konsolenprogramm auf - wenn ich meinen Codeschnipsel in eine Lazarus-Application einbaue, dann funktionierts.

-
- Beiträge: 61
- Registriert: Di 11. Sep 2007, 16:59
- OS, Lazarus, FPC: Ubuntu Maverick (L 0.9.28.2-10, FPC 2.4.0)
- CPU-Target: 32Bit
- Wohnort: Lage
- Kontaktdaten:
Re: ZEOS und GDB: TZConnection.Connect hängt
Ich nehme alle zurück und behaupte das Gegenteil:theo hat geschrieben:Ist da irgendwie Multithreading im Spiel?
wenn ich Lazarus als root per Kommandozeile starte, dann wirft er mir auf der Konsole folgende Texte aus:
Das Problem scheint aber bei Zeos zu liegen: ich habe hier 2 Zeos-Libs, die behaupten, dieselbe Versionsnummer zu haben (6.6.2-RC). Eine von beiden bekomme ich unter Lazarus 0.9.25b zum Laufen, die andere nicht. Unter Lazarus 0.9.26-2 laufen beide nicht[Debugger] Console output: ~"[Thread debugging using libthread_db enabled]\n"
[Debugger] Log output: &"Error while reading shared library symbols:\n"
[Debugger] Log output: &"Cannot find new threads: generic error\n"
[Debugger] Log output: &"Cannot find new threads: generic error\n"
[WARNING] Debugger: unexpected result-record: ^error,msg="Cannot find new threads: generic error"

Nachtrag: ich bin mal durch den Zeos-Source gesteppt. Es klemmt in ZCompatibility.pas in Zeile 208:
Code: Alles auswählen
function LoadLibrary(ModuleName: PChar): HMODULE;
begin
Result := HMODULE(dlopen(Modulename, RTLD_GLOBAL));
end;
greetz, Dets ...
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: ZEOS und GDB: TZConnection.Connect hängt
Wieso hast du denn die 6.6.2 und nicht die aktuelle stable?
Ich kann nur sagen, das die 6.6.5 gut läuft unter aktuellen Lazarusversionen. Außerdem ist die ja auch als stable gekennzeichnet.
Ich kann nur sagen, das die 6.6.5 gut läuft unter aktuellen Lazarusversionen. Außerdem ist die ja auch als stable gekennzeichnet.
Johannes
-
- Beiträge: 61
- Registriert: Di 11. Sep 2007, 16:59
- OS, Lazarus, FPC: Ubuntu Maverick (L 0.9.28.2-10, FPC 2.4.0)
- CPU-Target: 32Bit
- Wohnort: Lage
- Kontaktdaten:
Re: ZEOS und GDB: TZConnection.Connect hängt
Das war der Ausgangspunkt: mein Konsolen-Programm, was ich vor einiger Zeit entwickelt habe und einer Weiterentwicklung bedarf, ließ sich unter Lazarus 0.9.26-2/Jaunty/Zeos6.6.5 nicht debuggen. Ich war mir aber sicher, dass ich es damals debuggen konnte, deswegen habe ich als erstes nach einer älteren Version von Zeos gesucht und die 6.6.2 gefunden. Nachdem das auch nicht funktioniert hat, habe ich meine VM mit Lazarus 0.9.25b/Hardy/Zeos6.6.2 gestartet und damit lief es. Allerdings nicht, wenn man die Zeos6.6.5 benutzt.monta hat geschrieben:Wieso hast du denn die 6.6.2 und nicht die aktuelle stable?
BTW, gestern mal auf meinem eigenen PC getestet unter Lazarus0.9.26-4/Jaunty/Zeos6.6.5: läuft ebenfalls nicht. Deswegen habe ich überlegt, ob ich mein Programm auf SQLdb umstellen soll und habe das mal getestet: läuft ebenfalls nicht!
*arghhhh* Dets ...
-
- Beiträge: 61
- Registriert: Di 11. Sep 2007, 16:59
- OS, Lazarus, FPC: Ubuntu Maverick (L 0.9.28.2-10, FPC 2.4.0)
- CPU-Target: 32Bit
- Wohnort: Lage
- Kontaktdaten:
Re: ZEOS und GDB: TZConnection.Connect hängt
So, ich hab mir jetzt einen Workaround gebastelt: per Kommandozeilenswitch kann ich dem Compiler jetzt mitteilen, ob er mein Programm als Konsolenanwendung kompilieren soll oder als GUI-Anwendung mit einem Dummy-Formular:
greetz, Dets ...
Code: Alles auswählen
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
{$IFDEF DEBUG}
Interfaces // this includes the LCL widgetset
, Forms
{ you can add units after this }, LResources,
{$ENDIF}
uMyApp;
{$IFDEF WINDOWS}{$R zeosidetest2.rc}{$ENDIF}
{$IFDEF DEBUG}
type
TDummyForm = class(TForm)
protected
procedure DoShow; override;
end;
procedure TDummyForm.DoShow;
var
App: TMyApp;
begin
inherited;
App:=TMyApp.Create;
App.Run;
Application.Terminate;
end;
var
DummyForm: TDummyForm;
{$ELSE}
var
App: TMyApp;
{$ENDIF}
begin
{$IFDEF DEBUG}
{$I zeosidetest2.lrs}
Application.Initialize;
Application.CreateForm(TDummyForm, DummyForm);
Application.Run;
{$ELSE}
App:=TMyApp.Create;
App.Run;
{$ENDIF}
end.