我正在寻找相当于Systrace或至少strace的Windows。我知道 StraceNT,但想知道是否还有其他选择。具体来说,我正在寻找一种以编程方式强制执行系统调用策略的特定方法,尽管这可以在事实之后而不是主动停止它们。
目前有一个很好的方法吗?
答案 0 :(得分:36)
答案 1 :(得分:21)
WinDbg的Logger.exe最接近strace:http://msdn.microsoft.com/en-us/library/windows/hardware/ff552060(v=vs.85).aspx
编辑:还有windbg的wt:http://blogs.msdn.com/b/debuggingtoolbox/archive/2009/10/12/special-command-tracing-applications-using-wt.aspx答案 2 :(得分:12)
Dr. Memory(http://drmemory.org)工具附带了一个名为drstrace的系统调用跟踪工具,它列出了目标应用程序发出的所有系统调用及其参数:http://drmemory.org/strace_for_windows.html
为了以编程方式实施系统调用策略,您可以使用与drstrace相同的底层引擎:DynamoRIO工具平台(http://dynamorio.org)和DrSyscall系统调用监控库(http://drmemory.org/docs/page_drsyscall.html)。这些技术使用动态二进制翻译技术,这会产生一些开销(稳定状态下为20%-30%,但在运行新代码时会更高,例如启动大型桌面应用程序),这可能适用于您的目的,也可能不适合。 / p>
答案 3 :(得分:7)
API Monitor看起来非常有用。
答案 4 :(得分:5)
这是一篇非常有趣的文章,我不知道它是否会达到您正在寻找的目标,但我认为您可能会发现它会引导您朝着您想要的方向前进。
http://jbremer.org/intercepting-system-calls-on-x86_64-windows/
答案 5 :(得分:3)
strace可以从link的Cygwin获得。你可以下载它 来自cygwin package,例如:
Handler
strace是少数几个不依赖Cygwin DLL的Cygwin程序之一,
所以你应该可以将http://mirrors.sonic.net/cygwin/x86_64/release/cygwin/cygwin-2.0.2-1.tar.xz
# | | | |
# +-----------+----------+ +--+--+
# | |
# mirror version
复制到你想要的地方并使用它。
答案 6 :(得分:1)
有几种工具都是围绕Xperf构建的。它相当复杂但非常强大 - 请参阅quick start guide。 Windows Performance Analysis页面上还有其他有用的资源
答案 7 :(得分:1)
您可以使用Mark Russinovich编写的过程监视器。这是一个非常棒的小应用程序,它允许您连接到系统上的任何正在运行的进程,并查看该进程当前正在进行的所有系统调用。
https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx
答案 8 :(得分:0)