Komfortabler Dateimanager mit vielen Funktionen

Warum noch SP1?

By Sven on 20.06.2006 - 15:22 in Entwicklung

Im Kommentar zu Windows-Version ermitteln fragte Thomas, warum ich immer noch XP SP1 einsetze. Der Grund liegt in der Kombination von VC6 und den Windows-Debugsymbolen. Debugsymbole sind Zusatzinformationen des Compilers bzw. Linkers. Sie werden benötigt, um sich beim Debuggen bequem durch die verschiedenen Funktionen eines Programms bewegen zu können. Mit Hilfe der Debuginformationen kann der Debugger viel mehr Informationen anzeigen als ohne. Beim Erstellen der eigenen Programme werden die Debuginformationen normalerweise automatisch erstellt und verwendet. Sobald man aber eine Windows-Funktion aufruft, sieht man nur noch den Assemblercode und im Aufrufstack werden hexadezimale Adressen angezeigt. Zur Verdeutlichung habe ich einmal zwei Screenshots gemacht. Im ersten wird der Aufrufstack beim erstellen eines Fensters gezeigt. Man sieht nur, dass der Aufruf aus der USER32.DLL kommt:

Aufrufstack ohne Debugsymbole

Der zweite Screenshot zeigt das Disassembler-Fenster im Debugger, wenn man in die Windows-Funktion LoadLibrary hineingeht:

LoadLibrary ohne Debugsymbole

Bei Verwendung von Debugsymbolen ist der Aufrufstack sehr viel aussagekräftiger. Man sieht genau, wo der Aufruf einer Funktion herkommt und welchen Weg er durchlaufen hat:

Aufrufstack mit Debugsymbolen

Im Disassembler-Fenster sind die Auswirkungen der Debugsymbole aber noch gravierender. Die Assemblerwüste hat sich zu einer Oase von nützlichen Informationen entwickelt. Nun ist z.B. zu sehen, dass die Datei twain_32.dll beim Laden eine Sonderbehandlung erfährt:

LoadLibrary mit Debugsymbolen

Mit dem SP2 und der damaligen Sicherheitsinitiative hat Microsoft zum besseren Schutz vor Pufferüberläufen den Compiler gewechselt. Ab dem SP2 werden alle Dateien mit dem VC7 kompiliert, bis zum SP1 wurde noch der VC6 verwendet. Alle Patches für SP1 werden übrigens auch noch mit dem VC6 erstellt. Leider hat sich mit dem VC7 aber das Format der Debuginformationen geändert, der VC6 kann mit dem neuen Format nichts mehr anfangen. Man sieht so nur noch die Informationen, die in den ersten beiden Screenshots dargestellt werden. Abhilfe würde nur ein kompletter Umstieg auf Visual Studio 2005 schaffen, allerdings gibt es einige Gründe, warum dies derzeit keine Alternative ist.

Es können keine Kommentare abgegeben werden.

Top