【问题标题】:Instruments' UI Recorder hi-jacks my entire systemInstruments 的 UI Recorder 劫持了我的整个系统
【发布时间】:2011-05-05 23:26:14
【问题描述】:

我在这里做错了什么? :(

我打开 Instruments.app,创建一个新的 UI Recorder 模板,从 Target -> 选择 Target 菜单中选择我的应用程序的 .app 包,点击 Record,打开几个文档,在上面输入一些内容,关闭文档,退出应用程序。

此时 UI Recorder 停止,Record 按钮变为“Drive & Record”。我点击它,我看到我的应用程序启动并且仪器开始记录数据。然后 Instruments 变得混乱(不知何故)......我的应用程序失去了焦点,突然 UI Recorder 正在重放我在 Instruments 中的所有操作!,这只是以各种混乱的方式与 Instruments 搞砸了。在这种状态下,我无法移动鼠标(系统只是将光标偷回来),并且我无法退出仪器,因为当我点击 CMD+Q 时,系统会提示我保存文档,我可以'因为我无法控制键盘或鼠标。

这真是令人沮丧。有没有人有使用这个工具的经验,可以告诉我哪里出错了?我害怕第三次运行它,因为它真的劫持了我的整个系统。

【问题讨论】:

    标签: cocoa xcode macos memory-leaks instruments


    【解决方案1】:

    因此,您有内存泄漏,当您执行一系列特定操作时就会发生这种情况。

    调试此问题的困难方法是仅使用 Allocations 和/或 Leaks 工具并每次都自己执行操作,并且每次您搞砸(遗漏某些事情,做错事)时,终止进程并开始结束了。

    简单的方法是 UI Recorder。

    您第一次使用它记录时,它会记录您的操作(在事件级别,而不是目标操作级别)。鼠标移动、点击等。

    UI Recorder 与其他乐器的不同之处(这就是它让您感到惊讶的原因)在于,当您之后用它录制时,它会播放它们

    这不仅仅是随意地在鼠标光标周围摆动;它正在做你第一次做的事情。每次在您第一次执行操作后,UI 记录器都会为您执行完全相同的操作。

    这就是 UI Recorder 的用途:完美的、机械保证的再现性。它正在做它应该做的事情;它正在正常工作。

    是的,中止这很难。我还没有看,但可能有一个停止录制的全局系统热键可以使用。 Instruments 处于迷你模式时会有一个。

    此外,您可以在单击仪器的 (i) 按钮时出现的小弹出窗口中设置 UI Recorder 是处于“驱动”(播放)还是“录制”模式。将其切换到记录模式以重新记录您的交互,以便在以后的运行中获得不同的结果。 (我不知道它是否保留了过去运行的记录。)

    【讨论】:

    • 所以 UI Recorder 会退出我的应用程序并继续在 UI Recorder 本身内重播我的事件是正常的,在 UI Recorder 界面中单击随机的东西并将整个事情搞砸,没有机会在没有战斗的情况下使用键盘/鼠标?录制时我没有退出我的应用程序……只有 UI 记录器在播放时决定退出。如果这是正常的,这似乎是一个非常危险的工具。我手动使用 Leaks 并确实发现了一个现已修复的泄漏,但为什么会导致这种行为?
    • 我刚刚有个想法……我在录制过程中与菜单栏进行了交互。也许这是让 UI Recorder 感到困惑的地方,因为它可能在自己的菜单栏上播放这些动作?
    • d11wtq:这可能是其中的一部分;我不知道为什么它会切换应用程序,除非一个窗口从你第一次拥有它的地方移动。无论如何,请参阅我对答案的编辑。
    • 我从来没有完全弄清楚发生了什么,只是坚持手动驱动泄漏工具,而不是依赖 UI 记录。不过,我感谢您的回答,谢谢。
    猜你喜欢
    • 2017-07-10
    • 2013-03-30
    • 2011-04-06
    • 1970-01-01
    • 2016-11-07
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    相关资源
    最近更新 更多