c - 如何使用调试器 (VS 2013) 跟踪 win32 API 程序中的系统调用?

标签 c winapi

好吧,我用 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/

相关文章:

c - 在分配它的 void 函数之外释放内存

c - 如何使多个 `fork()` -ed 进程使用共享内存进行通信?

c++ - Windows 8 : How to read the user documents folder path programmatically (using c )?

c++ - 如何接收来自 Windows MessageBox 的反馈?

python - Pamie 和 python-win32 问题 pamie3 不工作

winapi - 在线程之间共享对象

c - g_signal 延迟(C、GTK+)

c++ - 从 VB6 调用 DLL 函数

C 编程 : Bag of words program, 需要帮助双指针

c++ - 为特定线程禁用 VS 调试器