2009-03-13 6 views
2

Für VS2008 (C++) generierte Linker-Map-Dateien, was bedeutet das Symbol "__unwind $"? Ich habe einen guten Teil davon in der Linker-Map-Datei für meine App.

Ich habe ein Protokoll, das besagt, dass ein Absturz bei einem bestimmten Versatz "x" passiert. Wenn ich auf die Linker-Map für diesen Offset schaue, finde ich diese __unwind $ 41357, die dem Offset entspricht.

Gibt es im Allgemeinen auch einen Verweis auf das Dateiformat von Linker-Map-Dateien zu verstehen?

Antwort

3

"Abwickeln" ist passiert mit einem Stapel, wenn eine Ausnahme ausgelöst wird. Das Präfix __ zeigt ein vom Compiler erzeugtes Symbol an. Auf der Grundlage der Beschreibung erhalten Sie einen Absturz zwischen einem Wurf und einem Fang. Meine Annahme ist, dass die aufgerufenen Destruktoren aus den Funktionen __unwind$ aufgerufen werden. Ein Inline-Destruktor hätte keinen eigenen Stackframe, würde also in der aufrufenden __unwind$-Funktion erscheinen.

0

Nur eine Vermutung, aber ich würde sagen, dass es Teil des Codes ist, der Stapelabwickeln behandelt, wenn eine Ausnahme ausgelöst wird.