Могу ли я добавить точку останова на CreateProcess в VS

Можно ли добавить точку останова в windows API CreateProcess в Visual Studio, как я могу сделать в Windbg?

Ответ 1

Да - перейдите "Debug/New breakpoint/Break at function..." и вставьте это:

{,,kernel32.dll}[email protected]

в поле Function.

Это предполагает сборку Unicode - замените W на A для сборок ANSI.

Немного объяснения: фрагмент @40 является частью соглашения о вызове stdcall и дает количество байтов параметров, которые выполняет функция. В win32 это почти всегда в 4 раза больше параметров. Подчеркивание также является частью соглашения о вызове stdcall.

Относительная нота: иногда имя функции, видимое отладчиком, отличается от ее реального имени - см. это сообщение в блоге для примера и как найти правильное имя для использования: Установка точки останова Visual Studio для функции Win32 API в user32.dll