PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ein wxWindows programm mit DevC++ debuggen



Alex_K
11-02-2004, 23:01
also, obwohl das ein unix forum ist, versuche ich es trotzdem mal hier (in 2 anderen foren hab ich bis jetzt noch keine antwort bekommen), da devc++ ja auch die gnu tools verwendet:

also da ich heute meine ersten versuche mit einem debugger gemacht habe, habe ich zuerst einmal versucht ein einfaches C programm zu debuggen.
darum hab ich in DevC++ (4.9.8.7) ein neues C - projekt begonnen, nur eine einfache schleife eingefügt und einen breakpoint in der schleife gesetzt. das ganze hab ich dann kompiliert. nun den debugger starten. da sagt devc++ dass keine debuginfos vorhanden sind, und ob er es mit den infos neu kompileren soll. nun nach dem neu kompileren funktioniert das debuggen ohne probleme (bleibt am breakpoint stehen, und man kann es weiter ausführen).

nun wollte ich das ganze an einem wxwindows projekt versuchen (die wxwindows pakete hab ich von http://michel.weinachter.free.fr). also hab ich ein neues wxWindows projekt gestartet. das vorgegebene beispiel ("minimal sample" von den wxWindows pakten) kompilert, und den debugger gestartet. nun sagt devc++ wieder dass keine debuginfos vorhanden sind, also wieder neu kompilieren. nun kann ich zwar den debugger starten, aber der meldet immer nur speicherzugriffsfehler (ohne debugger funktioniert das prog aber ohne probleme), wenn ich auf fortsetzten klicke kommt gleich der nächste usw.

gdb macht folgende ausgaben:



post-prompt
Starting program C:\DevCppProjekte\Projekt1.exe
frames-invalid
...
..
.
frames-invalid
frames-invalid
starting
frames-invalid
frames-invalid
frames-invalid
frames-invalid
signal
Program received signal
signal-name
SIGSEGV
signal-name-end
,
signal-string
Segmentation fault
signal-string-end
.
frame-begin 0 0x22f82c
frame-address
0x0022f82c
frame-address-name
??
in
frame-function-name
()
frame-end
stopped
pre-prompt
(gdb)
prompt


und das ganze wiederholt sich immer wieder ...

wenn ich das vorgegebene beispiel von einer normalen windows anwendung verwende passiert auch das gleiche.

also wo liegt mein fehler?

Alex_K
12-02-2004, 08:28
so, ich hab das ganze jetzt mal ohne die gui von devc++ versucht, und hab gdb in der kommandozeile gestartet.
dort geschied genau das gleiche, nun hab ich herrausgefunden dass dieses SIGSEGV immer genau dann auftritt sobald ich die maus über das fenster des zu debuggenden progamm bewege.

kann man dem debugger irgendwie klar manchen dass er das ignorieren soll?

peschmae
12-02-2004, 08:39
Solange du dich mit der Tastatur im Programm bewegst geht das ganze? :confused:

MfG Peschmä

oracle2025
12-02-2004, 09:25
hm, also ich verwende mingw+msys für wxWindows,
und hab eigentlich keine Probleme mit dem gdb

beim kompilieren sollte man den schalter -ggdb mit angeben,

hm, was für ne version von Windows verwendest du? Ich habe die Erfahrung gemacht, dass win98 ganzschon unkooperativ beim Debuggen ist :)

Alex_K
12-02-2004, 12:17
@peschmae

das ganze passiert wenn irgendein input zu dem fenster kommt, egal welcher. wenn ich mit alt + tab das fenster in den vordergrund hole passiert das gleiche.
wenn ich mit c das programm fortsetze, läuft es wieder so lange bis irgend ein input zum fenster kommt.

@oracle2025

ich verwende win2000 mit sp4 und aktuellen patchs.
devc++ kompiliert das ganze mit der option -g3.

kann es vielleicht auch daran liegen das die dev-pakte mit dieser option kompilert werden müssen, aber nicht sind?

Alex_K
12-02-2004, 13:48
so, jetzt hab ich mal wxwindows nach anleitung von wiki.wxwindows.org in einer mysys umgebung kompiliert (mit debuginfos). dort hab ich auch das minimal sample kompiliert. es startet wieder ohne probleme, aber der debugger macht auch dort das gleiche!



Alexander Keusch@ALEX /c/wxWindows-2.4/msw-debug/Samples/minimal
$ gdb minimal.exe
GNU gdb 5.1.1 (mingw experimental)
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "mingw32"...
(gdb) run
Starting program: c:\wxWindows-2.4\msw-debug\Samples\minimal/minimal.exe

Program received signal SIGSEGV, Segmentation fault.
0x0022f460 in ?? ()
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x0022f7a4 in ?? ()
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x0022f7a4 in ?? ()
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x0022f7d0 in ?? ()
(gdb) quit
The program is running. Exit anyway? (y or n) y

Alex_K
12-02-2004, 15:31
nach stundenlangen durchsuchen von mailinglisten und foren bin ich jetzt auf ein paar leute gestoßen die das gleiche problem haben.
es scheint als wäre es ein allgemeines problem von mingw, aber keiner weiß so genau warum es auftritt. es scheint auch mit der installation von windows zusammen zuhängen (von 3 leuten, die das problem haben, die ich gefunden habe, haben 2 das problem gelöst indem sie einen andere version von windows installiert haben, bzw. neu installiert habe).

also dann werde ich mich mal daran machen, windows neu installieren und hoffen dass es danach funktioniert ...

EDIT:

so ich habe jetzt die lösung gefunden!
es lag am antivirus, ich verwende panda AV in der version 7.0, seitdem ich ihn deaktiviert habe, funktioniert es ohne probleme.