gpt4 book ai didi

ios - 是否有任何工具可以跟踪 iOS 上特定文件的页面错误和其他相关事件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:46 25 4
gpt4 key购买 nike

System Usage(Instruments) 似乎只跟踪显式文件 io 调用(open, close, write, 阅读)。 System Trace(Instruments) trace page fault,但它是按调用堆栈组织的,很难过滤。

那么任何工具都可以跟踪特定文件的低级 io 事件?

最佳答案

DTrace 可以完成其中的一些工作(至少在 Solaris 中,您必须在 macOS 上亲自尝试一下)。 vm 提供程序有名为 fspginfspgoutfsfree 的探测器,它们在调入 FS 支持的页面时触发或内存不足,或者如果它们未被修改则被释放。还有一个更通用的方法,称为 maj_fault,它会在页面错误导致 IO 时触发。

唯一的问题是 DTrace 没有给你一个从这些探测器返回文件名的方法,如果你主要是在单个文件上出现页面错误,这可能没问题,或者如果你'正在尝试找出哪个文件是被分页的文件。但是,您仍然可以获得导致页面错误的进程的 execnamepid,以防有帮助。

Here’s您可以在其中查看 vm 提供程序的文档。那里有一些示例脚本,但这个可能是最好用的:

vminfo:::maj_fault,
vminfo:::zfod,
vminfo:::as_fault
/execname == "soffice.bin" && start == 0/
{
/*
* This is the first time that a vminfo probe has been hit; record
* our initial timestamp.
*/
start = timestamp;
}

vminfo:::maj_fault,
vminfo:::zfod,
vminfo:::as_fault
/execname == "soffice.bin"/
{
/*
* Aggregate on the probename, and lquantize() the number of seconds
* since our initial timestamp. (There are 1,000,000,000 nanoseconds
* in a second.) We assume that the script will be terminated before
* 60 seconds elapses.
*/
@[probename] =
lquantize((timestamp - start) / 1000000000, 0, 60);
}

这会打印出每种故障类型的内存事件时间线,并且文档会对其进行更详细的解释。

关于ios - 是否有任何工具可以跟踪 iOS 上特定文件的页面错误和其他相关事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53100746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com