我能在Visual Studio中像在WinDbg中那样在Windows CreateProcess API上添加断点吗?
我能在Visual Studio中像在WinDbg中那样在Windows CreateProcess API上添加断点吗?
是的 - 前往"Debug / New breakpoint / Break at function..."并粘贴以下内容:
{,,kernel32.dll}_CreateProcessW@40
在函数框中输入。
这假定是一个Unicode构建 - 对于ANSI构建,请用A
替换W
。
稍微解释一下: @40
部分是stdcall调用约定的一部分,并给出函数接受的参数字节数。在win32中,这几乎总是参数数量的4倍。下划线也是stdcall调用约定的一部分。
相关注释:有时调试器看到的函数名称与其真实名称不同 - 请参见此博客文章以获取示例和查找正确名称的方法:在user32.dll中设置Visual Studio断点的Win32 API函数
kernel32.dll
符号。您可以从 Debug/Windows/Modules 内的上下文菜单中执行此操作。 - ulidtko