我正在使用 kext 在 OS X 中记录系统调用,如下所示:
int hook_read(struct proc *p, struct read_args *u, user_ssize_t *r) {
/* get som params here... */
printf("[IDEN] SYS_read called, %s, %d, %d, %d.\n", params);
return read(p, u, r);
}
这记录到system.log
. 现在的问题是,如果printf
负载很高(调用了许多系统调用),则输出system.log
通常格式不正确:
ID]SYS_readEN] callparam, 123, ed 123, 123
例如。字符串被加扰。如果我使用kprintf
打印到串行端口的 ,则永远不会出现格式错误的日志。
任何想法是导致这种行为的原因都非常感谢!