Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   Debuggen = System hängt (https://www.delphipraxis.net/138391-debuggen-%3D-system-haengt.html)

FAlter 9. Aug 2009 15:27


Debuggen = System hängt
 
Hi,

ich will ein Programm schreiben, dass ich 1. für Windows und Linux compilieren kann und das 2. Threads verwendet.

Anfangen tue ich erstmal mit der Linux-Variante - und da bekomm ich eine Exception SIGFPE.

Nun denk ich mir, guckste mal wo genau die herkommt, also Breakpoint rein (in die Execute von dem Thread) und durchsteppen. Nach ein paar Steps bleibt es immer hängen. Ich kann nur noch den Mauszeiger bewegen, aber ich kann klicken wie ich will, nichts passiert, auch wenn ich außerhalb von Lazarus klicke. Ich kann auf der Tastatur drücken, was ich will.

Strg+Alt+Rück bzw. Strg+Alt+Entf helfen auch nicht, mir bleibt anscheinend nichts anderes mehr übrig als der Reset-Knopf. Und das immer kurze Zeit nachdem ich den Thread debuggen angefangen habe. Er steht nicht immer an der gleichen Codestelle, daran liegts wohl also nicht.

Versionen:

Lazarus 0.9.26-4 (i386-linux-gtk)
Ubuntu 9.04 / Linux 2.6.28-14-generic (alles auf dem Stand wie es der Paketmenager gerade für aktuell hält))

[edit]

Ergänzung: Starte ich das Programm in gdb dann meldet dieser keine Exception und es scheint auch soweit es gerade läuft zu klappen. Ich dachte Lazarus verwendet gdb als Debugger???

Ist da was falsch konfiguriert?

[/edit]

[edit=2] Wenn ich in einer Konsole gdb mit dem Programm geöffnet lasse (auch ohne es dort auszuführen) kommt es gar nicht mehr zu der SIGFPE??? [/edit]

[edit=3] Doch, gerade eben (direkt über gtk) schon, laut Stacktrace beim Setzen von Progressbar.Max aus dem Synchronize in dem Thread, in irgend was vom gtk. Und des öfteren kam irgendwo in einem ProgressBar Code ein Fehler den X11 gemeldet hat. Also ursprüngliches Problem zumindest soweit gelöst: Ich weiß, woher die Exception kommt, die ProgressBar von Lazarus (oder das Synchronize?) ist buggy. Nur warum ich nicht per Lazarus debuggen kann ist immer noch offen. [/edit]

Gruß
Felix

theodp 9. Aug 2009 20:58

Re: Debuggen = System hängt
 
Wiki lesen.
Debugging in Threads ist nicht so toll:
http://wiki.lazarus.freepascal.org/M...orial/de#Linux

FAlter 10. Aug 2009 07:03

Re: Debuggen = System hängt
 
Hi,

was mich irritiert ist das die Tastenkombinationen nicht geklappt haben. Soll Strg+Alt+Rück nicht gerade den X-Server neu starten? Und wenn ich Strg+Alt+Entf drücke fährt er herunter und startet neu, was auch nicht passiert ist.

Ich werd dabei bleiben und gdb zum debuggen benutzen.

Gruß
Felix

JamesTKirk 11. Aug 2009 08:55

Re: Debuggen = System hängt
 
Zitat:

Zitat von FAlter
Soll Strg+Alt+Rück nicht gerade den X-Server neu starten?

Dies ist in der neuesten Version des X-Servers "dank" den Drängen der Emacs Benutzer (steht so in der xorg Mailing List :roll: ) standardmäßig abgeschalten.

Du musst in der xorg.conf folgendes hinzufügen:
Code:
Section "ServerFlags"
Option "DontZap" "false"
EndSection
Alternativ kannst du in deiner xinitrc "setxkbmap -option terminate:ctrl_alt_bksp" einfügen.

Ersteres funktioniert bei mir nicht, aber bei nem Kommilitonen, letzteres hab ich noch nicht getestet.

Zitat:

Zitat von FAlter
Und wenn ich Strg+Alt+Entf drücke fährt er herunter und startet neu, was auch nicht passiert ist.

Das dürfte Distro-abhängig sein, da kann ich dir jetzt nichts dazu sagen.

Gruß,
Sven


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