好吧,我用 Win32 API 写了一个文件 I/O 代码。 (我使用的是 Visual Studio 2013)
它只是获取两个文件名(一个用于源,一个用于目标)并将一个复制到另一个。
我使用了 CreateFile、ReadFile、WriteFile。
它的功能很简单。这不是问题。但是..
我想看到在调试器中调用这些函数的系统调用。
我该怎么做?
调用堆栈?反汇编程序?
最佳答案
因此,您不仅希望能够调试自己的代码,还希望能够调试 API 本身。 有不同的方法可以做到这一点。
在最简单的层面上,只需使用来自 VS2013 的调试器。您将无法追踪到内核代码,但可以追踪到 API 中的所有用户级代码。但当然,由于您将使用没有符号表的非调试版本的 Windows,您只会看到低级机器代码 (*)。
如果你真的想更深入,你将不得不使用 Debugging Tools for Windows 。正如你所说你想要调试系统调用,我的建议是使用 Windows Driver Kit,Windows Symbols,如果你真的进入内核模式,Windows 的 Windows Remote Debugging Client(所有这些工具都可以从 Windows Dev Center 获得) .
所有这些工具都很好地集成在 VisualStudio 中,但要准备好进行艰苦的底层工作:-)
(*) 您还可以使用 Microsof Symbol Server 访问 Windows 符号信息 - 感谢 IInspectable 的评论。但我从未测试过。
关于c - 如何使用调试器 (VS 2013) 跟踪 win32 API 程序中的系统调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29317581/