
Nach anfänglicher Begeisterung folgt nun das Autsch. Der Debugger ist nutzlos, und das K.O. einer Hauptkomponente ist K.O. für das Gesamtprodukt. Projekt steht still, und alle die hier immer schon gewusst haben dass man Windows Software nur noch mit Visual Studio und .net Framework entwickeln kann reiben sich heimlich die Hände.
Umgebung: Lazarus 1.4.4 FPC:2.6.4 GDB: 7.2, WIndows 7 x64, gestartet im Admin-Konzext.
Derzeit quälen mich konkret folgende Fehler:
- Geister-Breakpoints.
Der Debugger stoppt an Stellen, an denen kein Breakpoint gesetzt ist. Kein Hinweis auf den Grund für den Stopp im Debugger-Ereignisprotokoll-Fenster. Blöd, wenn das mitten in einer Schleife passiert, die 10.000 mal aufgerufen wird. Der betroffene Code befindet sich in einer externen Library (StringHashList.pas). Bereits probiert: alle Breakpoints gelöscht, Lazarus beendet und neu gestartet, GDB Prozess abgeschossen und neu gestartet; an der fälschlich stoppenden Zeile einen Breakpoint gesetzt und ihn wieder entfernt, kompletten Call-Stack abgeklappert (kein Breakpoint unterwegs), komplettes Projekt aufgeräumt und neu kompiliert. Alles ohne Wirkung, der Debugger stoppt bei jedem Durchlauf wieder an der betroffenen Stelle.
- Abstürze des Debuggers beim Beenden des debuggten Programms:
"GDB has encuntered an internal Error" ...
danach:
While executing the command:
"TGDBMIDebuggerInstruction: "-file-exec-and-symbols ", "
gdb reported:
"&"../../gdb-7.2/gdb/printcmd.c
Diese Meldung erhalte ich nur, wenn folgender Code durchlaufen wird:
Code: Alles auswählen
procedure TForm1.OpenSourceFileButtonClick(Sender: TObject);
begin
OpenSourceFileDialog.FileName:=SourceFileEdit.Text;
DisplayMessage('Dateisystem lesen ...');
OpenSourceFileDialog.Execute;
DisplayMessage('');
SourceFileEdit.Text := OpenSourceFileDialog.FileName;
If TargetFileEdit.Text = '' Then TargetFileEdit.Text := TargetFileCreateName(SourceFileEdit.Text);
end;
Code: Alles auswählen
TForm1 = class(TForm)
StartButton1: TButton;
OpenSourceFileButton: TButton;
OpenTargetFileButton: TButton;
SourceFileEdit: TEdit;
TargetFileEdit: TEdit;
SourceFileLabel: TLabel;
OpenSourceFileDialog: TOpenDialog;
OpenTargetFileDialog: TOpenDialog;
ProgressBar1: TProgressBar;
TargetFileLabel: TLabel;
StatusBar1: TStatusBar;
...
Hat jemand einen nützlichen Rat, was ich tun kann?
Thx
Armin.