Windows的Systrace
我正在寻找一个相当于Systrace的Windows或至lessstrace 。 我知道StraceNT ,但想知道是否有更多的select。 具体来说,我正在寻找一种以编程方式强制执行系统调用策略的具体方式,尽pipe这可能是事后而不是主动阻止它们。
目前有没有一种好的方法呢?
WinDbg的Logger.exe是最接近strace: http : //msdn.microsoft.com/en-us/library/windows/hardware/ff552060 (v=vs.85) .aspx
编辑:还有windbg的重量: http : //blogs.msdn.com/b/debuggingtoolbox/archive/2009/10/12/special-command-tracing-applications-using-wt.aspx
几个选项:
进程监视器
另外,请参阅关于Windows 7内置工具的文章:
核心操作系统工具
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 )。 这些使用dynamic二进制翻译技术,这会产生一些开销(在稳定状态下为20%-30%,但在运行新代码(如启动大型桌面应用程序)时会高得多),这可能适用于您的目的,也可能不适合。
这里是一个相当有趣的文章,我不知道它是否符合你正在寻找的目标,但我认为你可能会发现它在你想要的方向引导你。
http://jbremer.org/intercepting-system-calls-on-x86_64-windows/
API监视器看起来非常有用于此目的。
strag可以从Cygwin的cygwin包中获得 。 您可以从Cygwin镜像下载它,例如:
http://mirrors.sonic.net/cygwin/x86_64/release/cygwin/cygwin-2.0.2-1.tar.xz # | | | | # +-----------+----------+ +--+--+ # | | # mirror version
strace是less数不依赖Cygwin DLL的Cygwin程序之一,所以你应该能够将strace.exe
复制到你想要的地方并使用它。
有几种工具都是围绕Xperfbuild立的。 这是相当复杂,但非常强大 – 请参阅快速入门指南 。 Windows性能分析页面上还有其他有用的资源
您可以使用由Mark Russinovich编写的进程监视器。 这是一个很棒的小应用程序,它可以让你连接到系统上正在运行的任何进程,并查看进程正在进行的所有系统调用。
https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx