[gelöst] Absturz im Debug Modus
Verfasst: 14. April 2007 13:33
Hallo,
ich habe folgendes Problem: Ich bin gerade dabei eine Qt Anwendung zu erstellen, die im Prinzip aus einem QMainWindow und zwei von QGLWidget abgeleiteten Viewer-Widgets besteht. Grundsätzlich läuft auch alles so, wie es soll, aber wenn ich unter Visual Studio 2005 die Anwendung im Debugger laufen lasse, stürzt das Programm immer dann ab, wenn ich ein Menü öffne und dieses eines der QGLWidgets verdeckt. Es liegt mit ziemlicher Sicherheit an meinen QGLWidgets, denn wenn ich die aus der Anwendung rausnehme, oder testweise durch andere ersetze, dann funktioniert alles und ich kann ordentlich debuggen. Selstsam ist halt, dass die debug-gebaute anwendung, wenn ich sie normal ausführe, funktioniert. Erst der Debugger von Visual Studio 2005 bringt dieses Problem zu Tage. Mittlerweile bin ich am Ende mit meinem Latein und weiss einfach nicht mehr weiter. Meine Debug Skills sind nicht die allerbesten, aber hoffe jemand aus diesem Forum kann mir da weiterhelfen. Hier erst mal der Backtrace:
msvcr80d.dll!fastzero_I(void * dst=0x00000c00, int len=3180) + 0x20 Bytes C
msvcr80d.dll!_VEC_memzero(void * dst=0x00000000, int val=3180, int len=1227276) + 0x36 Bytes C
QtGuid4.dll!gray_raster_new(void * memory=0x00000000, QT_FT_RasterRec_ * * araster=0x00000c00) Zeile 2047 + 0x10 Bytes C
msvcr80d.dll!_VEC_memzero(void * dst=0x00000000, int val=3180, int len=1227276) + 0x36 Bytes C
QtGuid4.dll!gray_raster_new(void * memory=0x00000000, QT_FT_RasterRec_ * * araster=0x00000000) Zeile 2047 + 0x10 Bytes C
QtGuid4.dll!gray_raster_new(void * memory=0x00000000, QT_FT_RasterRec_ * * araster=0x012f9708) Zeile 2047 + 0x10 Bytes C
QtGuid4.dll!QRasterPaintEngine::init() Zeile 611 + 0x12 Bytes C++
QtGuid4.dll!QRasterPaintEngine::QRasterPaintEngine() Zeile 586 C++
QtGuid4.dll!QRasterPaintDevice::QRasterPaintDevice() Zeile 43 + 0x49 Bytes C++
QtGuid4.dll!QRasterWindowSurfacePrivate::QRasterWindowSurfacePrivate() + 0xf Bytes C++
QtGuid4.dll!QRasterWindowSurface::QRasterWindowSurface(QWidget * window=0x012b4b88) Zeile 88 + 0x5f Bytes C++
QtGuid4.dll!qt_default_window_surface(QWidget * widget=0x012b4b88) Zeile 229 + 0x26 Bytes C++
QtGuid4.dll!QWidgetBackingStore::QWidgetBackingStore(QWidget * t=0x012b4b88) Zeile 315 + 0x9 Bytes C++
QtGuid4.dll!QWidget::create(HWND__ * window=0x00000000, bool initializeWindow=true, bool destroyOldWindow=true) Zeile 1061 + 0x26 Bytes C++
QtGuid4.dll!QWidget::setVisible(bool visible=true) Zeile 5163 C++
> QtGuid4.dll!QWidget::show() Zeile 417 + 0x16 Bytes C++
QtGuid4.dll!QAlphaWidget::run(int time=-1) Zeile 145 C++
QtGuid4.dll!qFadeEffect(QWidget * w=0x012f6278, int time=-1) Zeile 521 C++
QtGuid4.dll!QMenu::popup(const QPoint & p={...}, QAction * atAction=0x00000000) Zeile 1499 + 0xe Bytes C++
QtGuid4.dll!QMenuBarPrivate::popupAction(QAction * action=0x012f6618, bool activateFirst=false) Zeile 264 C++
QtGuid4.dll!QMenuBarPrivate::setCurrentAction(QAction * action=0x012f6618, bool popup=true, bool activateFirst=false) Zeile 299 C++
QtGuid4.dll!QMenuBar::mousePressEvent(QMouseEvent * e=0x0012c4b4) Zeile 909 C++
QtGuid4.dll!QWidget::event(QEvent * event=0x0012c4b4) Zeile 5695 C++
QtGuid4.dll!QMenuBar::event(QEvent * e=0x0012c4b4) Zeile 1275 C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x012ba9e0, QEvent * e=0x0012c4b4) Zeile 3434 + 0x11 Bytes C++
QtGuid4.dll!QApplication::notify(QObject * receiver=0x012ba9e0, QEvent * e=0x0012c4b4) Zeile 3133 + 0x2f Bytes C++
QtCored4.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver=0x012ba9e0, QEvent * event=0x0012c4b4) Zeile 186 + 0x40 Bytes C++
QtGuid4.dll!QETWidget::translateMouseEvent(const tagMSG & msg={...}) Zeile 2622 + 0x14 Bytes C++
QtGuid4.dll!QtWndProc(HWND__ * hwnd=0x00190a1e, unsigned int message=513, unsigned int wParam=1, long lParam=655447) Zeile 1278 + 0xc Bytes C++
user32.dll!7e368734()
[Unten angegebene Rahmen sind möglicherweise nicht korrekt und/oder fehlen, keine Symbole geladen für user32.dll]
user32.dll!7e368816()
user32.dll!7e3689cd()
user32.dll!7e368a10()
QtCored4.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Zeile 437 + 0x17 Bytes C++
QtGuid4.dll!QGuiEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Zeile 930 + 0x15 Bytes C++
QtCored4.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Zeile 127 C++
QtCored4.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Zeile 172 + 0x2d Bytes C++
QtCored4.dll!QCoreApplication::exec() Zeile 727 + 0x15 Bytes C++
QtGuid4.dll!QApplication::exec() Zeile 2928 C++
Viewer3D.exe!main(int argc=1, char * * argv=0x00a76830) Zeile 10 + 0x8 Bytes C++
Viewer3D.exe!__tmainCRTStartup() Zeile 586 + 0x19 Bytes C
Viewer3D.exe!mainCRTStartup() Zeile 403 C
kernel32.dll!7c816fd7()
Auch wenn meine Erwartungen aus dieser Misere rauszukommen nicht allzu groß sind, die Hoffnung stirbt zuletzt.
Gruß,
Dave
ich habe folgendes Problem: Ich bin gerade dabei eine Qt Anwendung zu erstellen, die im Prinzip aus einem QMainWindow und zwei von QGLWidget abgeleiteten Viewer-Widgets besteht. Grundsätzlich läuft auch alles so, wie es soll, aber wenn ich unter Visual Studio 2005 die Anwendung im Debugger laufen lasse, stürzt das Programm immer dann ab, wenn ich ein Menü öffne und dieses eines der QGLWidgets verdeckt. Es liegt mit ziemlicher Sicherheit an meinen QGLWidgets, denn wenn ich die aus der Anwendung rausnehme, oder testweise durch andere ersetze, dann funktioniert alles und ich kann ordentlich debuggen. Selstsam ist halt, dass die debug-gebaute anwendung, wenn ich sie normal ausführe, funktioniert. Erst der Debugger von Visual Studio 2005 bringt dieses Problem zu Tage. Mittlerweile bin ich am Ende mit meinem Latein und weiss einfach nicht mehr weiter. Meine Debug Skills sind nicht die allerbesten, aber hoffe jemand aus diesem Forum kann mir da weiterhelfen. Hier erst mal der Backtrace:
msvcr80d.dll!fastzero_I(void * dst=0x00000c00, int len=3180) + 0x20 Bytes C
msvcr80d.dll!_VEC_memzero(void * dst=0x00000000, int val=3180, int len=1227276) + 0x36 Bytes C
QtGuid4.dll!gray_raster_new(void * memory=0x00000000, QT_FT_RasterRec_ * * araster=0x00000c00) Zeile 2047 + 0x10 Bytes C
msvcr80d.dll!_VEC_memzero(void * dst=0x00000000, int val=3180, int len=1227276) + 0x36 Bytes C
QtGuid4.dll!gray_raster_new(void * memory=0x00000000, QT_FT_RasterRec_ * * araster=0x00000000) Zeile 2047 + 0x10 Bytes C
QtGuid4.dll!gray_raster_new(void * memory=0x00000000, QT_FT_RasterRec_ * * araster=0x012f9708) Zeile 2047 + 0x10 Bytes C
QtGuid4.dll!QRasterPaintEngine::init() Zeile 611 + 0x12 Bytes C++
QtGuid4.dll!QRasterPaintEngine::QRasterPaintEngine() Zeile 586 C++
QtGuid4.dll!QRasterPaintDevice::QRasterPaintDevice() Zeile 43 + 0x49 Bytes C++
QtGuid4.dll!QRasterWindowSurfacePrivate::QRasterWindowSurfacePrivate() + 0xf Bytes C++
QtGuid4.dll!QRasterWindowSurface::QRasterWindowSurface(QWidget * window=0x012b4b88) Zeile 88 + 0x5f Bytes C++
QtGuid4.dll!qt_default_window_surface(QWidget * widget=0x012b4b88) Zeile 229 + 0x26 Bytes C++
QtGuid4.dll!QWidgetBackingStore::QWidgetBackingStore(QWidget * t=0x012b4b88) Zeile 315 + 0x9 Bytes C++
QtGuid4.dll!QWidget::create(HWND__ * window=0x00000000, bool initializeWindow=true, bool destroyOldWindow=true) Zeile 1061 + 0x26 Bytes C++
QtGuid4.dll!QWidget::setVisible(bool visible=true) Zeile 5163 C++
> QtGuid4.dll!QWidget::show() Zeile 417 + 0x16 Bytes C++
QtGuid4.dll!QAlphaWidget::run(int time=-1) Zeile 145 C++
QtGuid4.dll!qFadeEffect(QWidget * w=0x012f6278, int time=-1) Zeile 521 C++
QtGuid4.dll!QMenu::popup(const QPoint & p={...}, QAction * atAction=0x00000000) Zeile 1499 + 0xe Bytes C++
QtGuid4.dll!QMenuBarPrivate::popupAction(QAction * action=0x012f6618, bool activateFirst=false) Zeile 264 C++
QtGuid4.dll!QMenuBarPrivate::setCurrentAction(QAction * action=0x012f6618, bool popup=true, bool activateFirst=false) Zeile 299 C++
QtGuid4.dll!QMenuBar::mousePressEvent(QMouseEvent * e=0x0012c4b4) Zeile 909 C++
QtGuid4.dll!QWidget::event(QEvent * event=0x0012c4b4) Zeile 5695 C++
QtGuid4.dll!QMenuBar::event(QEvent * e=0x0012c4b4) Zeile 1275 C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x012ba9e0, QEvent * e=0x0012c4b4) Zeile 3434 + 0x11 Bytes C++
QtGuid4.dll!QApplication::notify(QObject * receiver=0x012ba9e0, QEvent * e=0x0012c4b4) Zeile 3133 + 0x2f Bytes C++
QtCored4.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver=0x012ba9e0, QEvent * event=0x0012c4b4) Zeile 186 + 0x40 Bytes C++
QtGuid4.dll!QETWidget::translateMouseEvent(const tagMSG & msg={...}) Zeile 2622 + 0x14 Bytes C++
QtGuid4.dll!QtWndProc(HWND__ * hwnd=0x00190a1e, unsigned int message=513, unsigned int wParam=1, long lParam=655447) Zeile 1278 + 0xc Bytes C++
user32.dll!7e368734()
[Unten angegebene Rahmen sind möglicherweise nicht korrekt und/oder fehlen, keine Symbole geladen für user32.dll]
user32.dll!7e368816()
user32.dll!7e3689cd()
user32.dll!7e368a10()
QtCored4.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Zeile 437 + 0x17 Bytes C++
QtGuid4.dll!QGuiEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Zeile 930 + 0x15 Bytes C++
QtCored4.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Zeile 127 C++
QtCored4.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Zeile 172 + 0x2d Bytes C++
QtCored4.dll!QCoreApplication::exec() Zeile 727 + 0x15 Bytes C++
QtGuid4.dll!QApplication::exec() Zeile 2928 C++
Viewer3D.exe!main(int argc=1, char * * argv=0x00a76830) Zeile 10 + 0x8 Bytes C++
Viewer3D.exe!__tmainCRTStartup() Zeile 586 + 0x19 Bytes C
Viewer3D.exe!mainCRTStartup() Zeile 403 C
kernel32.dll!7c816fd7()
Auch wenn meine Erwartungen aus dieser Misere rauszukommen nicht allzu groß sind, die Hoffnung stirbt zuletzt.
Gruß,
Dave