Beim Entwickeln kann es schnell mal sein, dass ein Buffer ungewollt über den allokierten Bereich überschrieben wird. Um einen Fehler dieser Art zu finden, bieten sich Tools von Mircosoft an:

https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit

Hat man die Tools installiert geht man mit der Konsole an folgend Ort:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x86

dort ruft man
gflags.exe /p
auf, um zu sehen welche Programme (Binaries) gerade überwacht werden.

Als nächsten Schritt müssen wir unser Programm einfügen (mit absolutem Pfad), PATH ist zu ersetzen
gflags.exe /p /full /enable PATH

Jetzt starten wir die Debug-Gui aus dem gleichen Ordner (C:\Program Files (x86)\Windows Kits\10\Debuggers\x86) mit dem Namen
windbg.exe
Ist das Programm gestartet kann man entweder einen laufenden Prozess (nicht aus anderer Debugging-Umgebung, sondern direkt gestartet) auswählen oder den Prozess direkt mit dem Windows Debugger starten.
Für den zweiten Fall kann die Session mit F5 gestartet werden.

Sobald der Heap-Error auftritt wird der entsprechende Code im Debugger angezeigt und die betroffene Zeile markiert.

Zum Schluss sollte die Überwachung wieder beendet werden, dies geschieht mit
gflags.exe /p /full /disable EXECUTEABLE
wobei hier nur der EXECUTEABLE Name angegeben werden muss und nicht der komplette Pfad

Quellen

https://blog.kowalczyk.info/article/1j9/gflags-a-debugging-story.html
https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert