Wurfpunkt oder Message einer std::exception rausfinden



  • Hallo!

    Mein in VS 2010 und C++ geschriebenes Programm bricht mit einer Exception ab:

    First-chance exception at 0x7549c41f in SoHub.exe: Microsoft C++ exception: std::exception at memory location 0x0032bf70..
    Unhandled exception at 0x7549c41f in SoHub.exe: Microsoft C++ exception: std::exception at memory location 0x0032bf70..

    Ich werfe in meinem Programm auch selber std::exceptions mit einem String als Nachricht. Es kann also gut sein, dass das eine von mir geworfene Exception ist.
    Das Problem: VS zeigt mir weder an WO die exception geworfen wurde, noch den String in der exception.

    Komm ich da irgendwie ran?



  • Fangen hört sich generell nach nem Plan an.



  • Sehr lustig -.-
    Genau darum geht es doch. Ich weiß ja nicht WO sie fliegt...



  • int main()
    {
        try
        {
            // <-- your code here
        }
        catch (std::exception const& err)
        {
            std::cerr << u8"Och nö, ein Fehler! " << err.what() << std::endl;
            return EXIT_FAILURE;
        }
        catch (...)
        {
            std::cerr << u8"dafuq?" << std::endl;
            return EXIT_FAILURE;
        }
    }
    

    Überhaupt nicht nötig zu wissen wo die Exception fliegt. Das ist der Vor- und Nachteil von Exceptions.



  • Biolunar schrieb:

    Überhaupt nicht nötig zu wissen wo die Exception fliegt.

    Der Frager möchte debuggen. 🙄

    Debugging -> Exceptions -> Häckchen setzen.
    Programm mit Debugger laufen lassen.



  • kleinerTipp schrieb:

    Biolunar schrieb:

    Überhaupt nicht nötig zu wissen wo die Exception fliegt.

    Der Frager möchte debuggen. 🙄

    Debugging -> Exceptions -> Häckchen setzen.
    Programm mit Debugger laufen lassen.

    Wenigstens einer, der meine Frage versteht!

    Ok, danke. Habe ich gerade ausprobiert. VS stoppt dann auch mit einer Message Box

    irst-chance exception at 0x7549c41f in SoHub.exe: Microsoft C++ exception: std::exception at memory location 0x0044b7f0..

    nur seh ich nach wie vor nicht WO die exception geworfen wurde. Habe einen Test gemacht und bewusst eine std::exception geworfen und der Callstack zeigt eine ganz andere Stelle (tief in irgend einer Qt Funktion).



  • Verwendest du verschiedene Threads? Dann müßtest du erst noch mit dem Threads-Fenster zu dem "richtigen" Thread wechseln, um dann dessen Callstack anschauen zu können.


Anmelden zum Antworten