2009-07-15 12 views

Antwort

15

Ja - Go "Debug/New Breakpoint/Break at Funktion ..." und diese Paste:

{,,kernel32.dll}[email protected] 

in das Feld Funktion.

Das setzt eine Unicode-Erstellung voraus - ersetzen Sie W durch A für ANSI-Builds.

Ein bisschen Erklärung: Die @40 Stück ist Teil der Aufrufkonvention stdcall, und gibt die Anzahl der Bytes von Parametern, die die Funktion dauert. In win32 ist dies fast immer die 4-fache Anzahl der Parameter. Der Unterstrich ist auch Teil der Aufrufkonvention stdcall.

Ein entsprechender Hinweis: Manchmal ist der Name der Funktion, wie durch den Debugger unterscheidet sich von seinen echten Namen gesehen - siehe diese Blog-Post für ein Beispiel, und wie der richtige Namen finden zu verwenden: Setting a Visual Studio breakpoint on a Win32 API function in user32.dll

+4

Besser Pause bei beiden. Aufgrund des unkonventionellen Verhaltens von CreateProcessW können sogar Unicode-Anwendungen CreateProcessA aufrufen. Der CreateProcess-Makro versteckt die zugrunde liegenden zwei Funktionsdeklarationen nicht, so dass sie aufrufbar bleiben. Dies gilt auch für ähnliche Makros für andere Funktionspaare. – MSalters

+2

Eine zusätzliche Sache zu beachten ist, dass Sie 'kernel32.dll' Symbole zuerst herunterladen müssen. Sie können dies über das Kontextmenü in Debug/Windows/Modules tun. – ulidtko

+0

Erklärung von {,,,} Syntax ist hier: https://msdn.microsoft.com/en-us/library/wztycb7f(v=vs.100).aspx beachten Sie, dass aus welchem ​​Grund auch immer der Artikel nicht existiert Visual Studio höher als vs2010 –

Verwandte Themen