Ich hacke mich gerade um eine Lösung herum, um Fehler beim Debuggen zu erleichtern.AccessViolation beim Aufruf von SymSetOptions nach Stack-Überlauf
, so habe ich eine definierte allready main
und der Benutzer muss wrappermain
definieren, die die Verwendung von main
ersetzen:
int main(int ac, char** av)
{
__try {
return wrappermain(ac, av);
} __except(HandleException(GetExceptionCode(), GetExceptionInformation()) {
return 1;
}
}
jetzt in der HandleException
Funktion laden i die Symbolinformationen und stellen Sie einige Optionen:
dieses Konstrukt funktioniert wie ein Charme, aber wenn ich einen Stapelüberlauf mit einer endlosen Rekursion provozieren, erhalte ich eine Zugriffsverletzung beim Aufruf SymSetOptions(symOptions)
was könnte das sein und wie kann man diesen Absturz loswerden?
Es gibt nur ca. 7 Kilobyte Stapelspeicher an der Handle links() -Aufruf, Notfallraum released durch den SO-Handler. Ohne Backstop an Ort und Stelle, um eine weitere SO zu generieren, wenn Sie eine Funktion aufrufen, die viel Stapelspeicherplatz benötigt. Kaboom mit AV ist der nächste. Einige Ausnahmen sind einfach zu unangenehm, um sie anmutig zu behandeln. Sie haben nach diesem die Website eines Programmierers benannt :) –
@HansPassant wow, das hört sich gut an, was ist der Name dieser Seite? Vielleicht gibt es eine Menge hilfreicher Informationen darüber (die Rekursion wird wieder gestartet);) – Zaiborg
Falsche Lösung. Sie sollten wirklich [MiniDumpWriteDump] (https://msdn.microsoft.com/de-us/library/windows/desktop/ms680360.aspx) statt. Bonus: Sie erhalten so viel oder so wenig Informationen in Ihrem Minidump wie Sie anfordern. Und Sie müssen PDBs mit Ihrer Anwendung nicht versenden. – IInspectable