2017-12-07 3 views
0

Ich habe die folgende Situation: Mein Programm läuft gut, tut alles, was ich will es zu tun, Tests bestehen und Valgrind sagt, es ist in Ordnung. Das einzige Problem ist die Tatsache, dass einige Variablen <not-accessible> werden und versuchen, den Status einiger Objekte in der Debug-Ansicht von QtCreator (mit GDB) zu inspizieren, und beim Fortsetzen der Ausführung einen Segmentierungsfehler erreicht.SEGFAULT nach der Überprüfung der Variable mit GDB auf QtCreator

Um ein wenig genauer zu sein, ist das Programm single-threaded und dies geschieht während der Verfolgung der Zeiger in einer Baumstruktur. Die Struktur scheint durch die Ausgabe der Tests in Ordnung zu sein.

Kennt jemand eine mögliche Ursache? Vielleicht habe ich den Stack auf eine Weise durcheinander gebracht, die glücklicherweise die Tests nicht beeinflusst, oder es könnte nur ein IDE- oder Debugger-Problem sein, das sich nicht interessieren sollte? Vielen Dank im Voraus für die Antworten.

+0

Ich fand auch GDB (oder vielleicht seine Integration mit Qt Creator) unzuverlässig (Buggy). Manchmal blieb es einige Minuten hängen und manchmal musste ich Qt neu starten. Nicht sicher, ob es sich um ein Qt- oder GDB-Problem handelt. –

Antwort

0

Kennt jemand eine mögliche Ursache?

Haben Sie mehrere Threads in Ihrem Programm?

Wenn sich ein Programm abhängig davon verhält, ob GDB-Haltepunkte vorhanden sind oder nicht, hat das Programm in 99,99% der Fälle ein Datenrennen, und die bloße Tatsache, es zu "unpassender" Zeit anzuhalten, macht diese Tatsache deutlich.

Unter Linux können Sie Thread Sanitizer verwenden, um nach Datenrennen zu suchen.

+0

Danke für die Antwort. Ich bin mir dieser Art von "Heisenbug" bewusst. Das Problem ist, dass es eine Single-Thread-App ist. –

Verwandte Themen