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.