我正在寻找Windows上的Systrace或至少strace。我知道 StraceNT,但想知道是否还有其他选择。具体来说,我正在寻找一种以编程方式实施系统调用策略的特定方法,尽管这可以在事后采取,而不是主动停止实施。
目前有什么好方法吗?
Answers:
WinDbg的Logger.exe最接近strace:http : //msdn.microsoft.com/zh-cn/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
内存博士(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%,但是在运行新代码(例如启动大型桌面应用程序)时会更高),这可能不适合您的目的。
API Monitor对此非常有用。
这是一篇很有趣的文章,我不知道它是否达到了您要寻找的目标,但我认为您可能会发现它可以将您引向您想要的方向。
http://jbremer.org/intercepting-system-calls-on-x86_64-windows/
strace可从Cygwin的cygwin软件包中获得。您可以从Cygwin镜像下载它,例如:
http://mirrors.sonic.net/cygwin/x86_64/release/cygwin/cygwin-2.0.2-1.tar.xz
# | | | |
# +-----------+----------+ +--+--+
# | |
# mirror version
strace是少数不依赖Cygwin DLL的Cygwin程序之一,因此您应该能够将其复制strace.exe
到所需的位置并使用它。
strace notepad
。它启动记事本,但不捕获任何系统调用。
Xperf周围都有许多工具。它相当复杂,但功能非常强大-请参阅快速入门指南。Windows Performance Analysis页面上还有其他有用的资源
您可以使用Mark Russinovich编写的过程监视器。这是一个很棒的小应用程序,它将允许您连接到系统上任何正在运行的进程,并查看该进程当前正在执行的所有系统调用。
https://technet.microsoft.com/zh-cn/sysinternals/processmonitor.aspx