我可以在VS中的CreateProcess上添加断点

ana*_*and 11 c++ breakpoints visual-studio

我可以在Visual Studio中的Windows CreateProcess API上添加断点,就像我在Windbg中可以做的那样吗?

Ric*_*dle 16

是 - 转到"Debug/New breakpoint/Break at function ..."并粘贴它:

{,,kernel32.dll}_CreateProcessW@40
Run Code Online (Sandbox Code Playgroud)

进入功能框.

它假定一个Unicode生成-替换WA的ANSI版本.

一点解释:该@40部分是stdcall调用约定的一部分,并给出该函数所采用的参数的字节数.在win32中,这几乎总是参数数量的4倍.下划线也是stdcall调用约定的一部分.

相关说明:有时调试器看到的函数名称与其实名不同 - 请参阅此博客文章以获取示例,以及如何找到要使用的正确名称:在Win32 API函数上设置Visual Studio断点在user32.dll中

  • 最好打破两者.由于CreateProcessW具有时髦的非const行为,即使Unicode应用程序也可能调用CreateProcessA.CreateProcess宏不会隐藏底层的两个函数声明,因此它们仍然可以调用.这也适用于其他功能对的类似宏. (4认同)
  • 另外需要注意的是,您必须先下载`kernel32.dll`符号.您可以从Debug/Windows/Modules中的上下文菜单中执行此操作. (2认同)