2016-04-17 4 views
0

Ich portiere ein SFML-Projekt, das ich unter Windows gemacht habe.Wie kann ich herausfinden, was ein Programm unter Windows zum Absturz bringt?

Wenn ich mein Programm starten, tritt es sofort mit diesem Fehler:

Unhandled exception at 0x73E4C9F5 in name: 0xC0000005: Access violation executing location 0x00000000. 

Problem ist, mein Programm funktioniert auf dem PC von anderen Benutzern gut ...

Es ist auf der Schaffung abstürzt von meinem Fenster.

Haben Sie eine Idee, wie kann ich herausfinden, warum mein Programm auf meinem PC abstürzt? Gibt es irgendeine Art von gdb in Windows?

Das ist mein Call-Stack:

> 00000000() Unknown 
    [Frames below may be incorrect and/or missing] 
    atiglpxx.dll!731238e7() Unknown 
    atiglpxx.dll!73123770() Unknown 
    [External Code] 
    atiglpxx.dll!73124597() Unknown 
    [External Code] 
    The-Duck-Reborn.exe!00c7cb5d() Unknown 
    [External Code] 
    The-Duck-Reborn.exe!00c7b60d() Unknown 
    The-Duck-Reborn.exe!00c7ae61() Unknown 
    The-Duck-Reborn.exe!00c78f2a() Unknown 
    The-Duck-Reborn.exe!00cd33e3() Unknown 
    The-Duck-Reborn.exe!00c78048() Unknown 
    The-Duck-Reborn.exe!00c76e50() Unknown 
    The-Duck-Reborn.exe!00c644ee() Unknown 
    The-Duck-Reborn.exe!00c5b9f0() Unknown 
    [External Code] 
    The-Duck-Reborn.exe!00c86745() Unknown 
    [External Code] 

EDIT: Alles SFML Programm, das ich versuche Abstürze zu starten ... Vielleicht ein lib fehlt aber wie das finden?

+0

Ja, es gibt eine Vielzahl von Debuggern, die auf Windows funktionieren. Warum nicht deine Toolchain konsultieren? – StoryTeller

+4

Visual Studio hat eine der besten Debugger für C++ – bolov

+0

[gdb für Windows] (https://sourceforge.net/projects/mingw-w64/) (einschließlich GCC als auch) – ForceBru

Antwort

1

Führen Sie es unter dem Debugger, und sehen Sie, was es tut, wenn die Zugriffsverletzung passiert.

Dann noch einmal, um zu sehen, warum die Variable immer noch ein Nullzeiger ist.

+0

Warum denken Sie, dass ein Nullzeiger beteiligt ist? – ForceBru

+0

Die Adresse in Frage ist 0x00000000 –

1

Installieren Sie Visual Studio, kompilieren Sie einen Debug-Build, konfigurieren Sie Debug-Symbole (TLDR: Extras, Optionen, Debugging, Symbole, überprüfen Sie "Microsoft Symbol Server"), starten Sie mit Debugger, und Sie werden sehen, was passiert. Achten Sie darauf, die Debug-Ausgabe (Ansicht, Ausgabe) zu lesen: oft Debug-Builds drucken Sie einfach den Grund, warum die Dinge scheitern.

Die "gdb in Windows" heißt windbg, und große Teile davon ist in das Betriebssystem integriert. Here’s the documentation.

Es ist jedoch viel schwieriger zu verwenden als Visual Studio-Debugger. Aber wenn Sie kein Visual Studio auf der Maschine haben, wo es abstürzt, oder den Absturz nicht zuverlässig reproduzieren kann, d. H. Nur den Dump haben, dann müssen Sie diesen verwenden.

Verwandte Themen