Registriert: Di Okt 13, 2009 17:25 Beiträge: 365
Programmiersprache: C++
Hallo, in meinen CodeBlocks-Projekten habe ich ein imho sehr merkwürdiges Problem. Und zwar meldet der Debugger ein SIGTRAP genau dann, wenn ich einen Breakpoint setze, während das Programm läuft. Wenn ich einen Breakpoint hinzufüge, während das Programm durch einen anderen pausiert wird, führt das nicht zu einem SIGTRAP. Die Breakpoints funktionieren jedoch immer, egal ob mit oder ohne SIGTRAP gesetzt.
Wenn ich das Programm gewaltsam mit dem Stop-Button vom Debugger abschieße, gibt es ebenfalls ein SIGTRAP -- es sei denn, das Programm pausiert gerade.
Kennt das jemand von euch vielleicht? Ist es vielleicht gar nicht vorgesehen, dass man Breakpoints definiert, während das Programm noch "voll in Fahrt" ist? Oder kann es irgendwie doch an meinem Code liegen? Ich benutzte übrigens CodeBlocks 10.05 mit MinGW, falls das eine Rolle spielt. Ob Multithreading verwendet wird oder nicht spielt offenbar keine Rolle. Zum Schluss noch das Log vom Debugger:
Der Debugger beim Setzen eines Breakpoints, während das Programm noch läuft hat geschrieben:
Trying to pause the running process... Continuing... Program received signal SIGTRAP, Trace/breakpoint trap. In ntdll!DbgUiConvertStateChangeStructure () (C:\Windows\system32\ntdll.dll)
Der Debugger beim Eliminieren des Child Processes hat geschrieben:
Trying to pause the running process... Program received signal SIGTRAP, Trace/breakpoint trap. In ntdll!DbgUiConvertStateChangeStructure () (C:\Windows\system32\ntdll.dll)
Edit: Ich kann das ganze sogar mit einem einfachen Hello World-Programm reproduizieren, es liegt also offenbar nicht am Code.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Interessantes Problem, habe mal Google angeworfen. Ich hatte sowas ähnliches mal als ich versucht habe, ein Windowsprogramm zu … ähm … untersuchen… (*hust*). Da wurden die SIGTRAPS aber glaube ich mit absicht geworfen um die Leute zu ärgern…
Aber dieser Stackoverflow-Thread könnte dir helfen: Scheint so als ob du ganz sicher stellen solltest, dass nicht versehentlich irgendwo die falsche libc eingebunden wird. Sonst fliegt dir die Speicherverwaltung um die Ohren. Wobei es mich schon wundert, dass das nur nach aktionen mit dem Debugger passiert. Also womöglich eher nicht die Lösung.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Di Okt 13, 2009 17:25 Beiträge: 365
Programmiersprache: C++
Eventuell hast du mir gerade sehr geholfen.
Calmarius auf Stackoverflow hat geschrieben:
I know that SIGTRAP-s are thrown when the program hits a breakpoint
Wenn der Debugger das SIGTRAP auslöst, um anhalten zu können, ist das natürlich kein Fehler. Allerdings gibt es ja kein SIGTRAP, wenn der Breakpoint während einer Pause gesetzt wurde, weshalb ich die Aussage des Calmarius anzweifeln möchte. Weiß da jemand mehr?
Libraries linke ich übrigens gar keine, jedenfalls nicht im Hello World Programm, wo das Phänomen ja auch auftritt.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Naja, aber eigentlich sieht man die SIGTRAPs nicht, zumindest nicht, wenn sie für Breakpoints stehen. Deswegen sollte das kein Problem darstellen. Ok, möglicherweise sendet der Debugger nen SIGTRAP an das Programm, um es anzuhalten und dann breakpoints zu setzen etc.. Das würde mit deinen Beobachtungen überein stimmen.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Di Okt 13, 2009 17:25 Beiträge: 365
Programmiersprache: C++
Nach langer Zeit... *bump*
Hier arbeitet doch bestimmt noch jemand mit Code::Blocks? Wäre nett, wenn diejenigen mal kurz was dazu schreiben könnten. Dann könnte man wenigstens klären, ob das Verhalten normal ist oder nicht. Danke!
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Der CodeBlocks Debugger hat so einige Macken, neben der beschriebenen gibt es noch z.B. Breakpoint wird ignoriert, Symbole können nicht angeschaut werden obwohl keine Optimierung an ist und man noch im Scope ist, random abstürze, debugging wird mit jeden mal immer langsamer und noch ein bisschen. CodeBlocks ist echt cool und man kann mit den Problemen leben, selbst auf Arbeit nutzt ich es jeden Tag.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.