实时看门狗 1.0.3

实时看门狗 1.0.3

测试已测试
语言语言 Obj-CObjective C
许可证 NOASSERTION
发布最后发布2022年3月

Michael Tyson 维护。



  • Michael Tyson

实时线程安全看门狗

该库针对iOS设备,作为被认为是非安全的Core Audio线程操作的看门狗

  1. 获取锁
  2. 分配内存
  3. 使用Objective-C
  4. 文件或网络I/O

它通过覆盖许多系统函数来实现,包括mallocfreeobjc_storeStrongobjc_msgSend(目前只适用于64位设备和64位模拟器)、pthread_mutex_lockobjc_sync_enterreadwrite等。当检测到调用时,会在控制台打印警告。您还可以在AERealtimeWatchdogUnsafeActivityWarning上设置断点。

它不会捕获所有操作,也不会捕获苹果自己的系统代码中的任何操作,但会捕获一些锁、一些内存分配、所有Objective-C的使用(但不是Swift)、所有对象保留和一些常见的I/O任务,包括您的代码和您使用的任何静态库中的代码。

此库还已集成到The Amazing Audio Engine 2中。

Taylor Holliday提出,由Michael Tyson实现。

用法

使用Cocoapods:将"RealtimeWatchdog" pod添加到您的Podfile中,并调用pod install。完成!

在不使用Cocoapods的情况下

  1. RealtimeWatchdog.xcodeproj拖放到您的项目中。
  2. 选择您的应用程序目标的构建设置,打开“与库链接二进制”项,点击“+”按钮,选择libRealtimeWatchdog.a。完成。

如果您收到任何关于隐式依赖项的错误,您可能还需要打开“目标依赖项”项,并将RealtimeWatchdog添加到那里。

您可以通过注释掉AERealtimeWatchdog.h中的#define REALTIME_WATCHDOG_ENABLED 1行轻松禁用监视器。

该功能仅对调试构建有效,因此您可以安全地保留。

注意,对于64位设备和64位模拟器,该库提供了自己实现的objc_msgSend封装,这意味着Objective-C方法调用会略微变慢。

有关实时线程安全性的更多讨论,请参阅以下文章:音频开发中的四个常见错误

实时线程安全监视器许可

版权所有(C)2012-2016 A Tasty Pixel

该软件提供“原样”使用,不提供任何明示或暗示的保证。在任何情况下,作者都不会因使用该软件而承担任何责任。

允许任何人出于任何目的使用此软件,包括商业应用程序,并可自由修改和重新分发,但须遵守以下限制:

  1. 不得假冒该软件的来源;不得声称您编写了原始软件。如果将此软件用于产品中,产品文档中应表示感谢,但不是必需的。

  2. 更改后的源代码版本必须明确标记为修改版,并且不得虚假陈述其为原始软件。

  3. 本通知不得从任何源分发中删除或更改。