UI Recorder от Instruments захватывает всю мою систему

Что я здесь делаю неправильно? :(

Я открываю Instruments.app, создаю новый шаблон UI Recorder, выбираю пакет .app моего приложения в меню Target -> Choose Target, нажимаю Record, открываю пару документов, ввожу в них что-то, закрываю документы, выхожу из приложения .

В этот момент UI Recorder останавливается, и кнопка «Запись» меняется на «Drive & Record». Я нажимаю на нее, я вижу, что мое приложение запускается, и инструменты начинают записывать данные. Затем инструменты путаются (каким-то образом)... мое приложение теряет фокус, и внезапно UI Recorder воспроизводит все мои действия в инструментах!!, которые просто путаются с инструментами всевозможными грязными способами. В этом состоянии я не могу двигать мышью (система просто крадет курсор назад), и я не могу выйти из инструментов, так как когда я нажимаю CMD+Q, мне предлагается сохранить документ, что я могу' не делаю, потому что у меня нет контроля над клавиатурой или мышью.

Это очень расстраивает. У кого-нибудь есть опыт работы с этим инструментом, который может сказать мне, где я ошибаюсь? Я боюсь запускать его в третий раз, так как он буквально захватывает всю мою систему.


person d11wtq    schedule 06.11.2010    source источник


Ответы (1)


Итак, у вас есть утечка памяти, и происходит это при выполнении определенной последовательности действий.

Сложный способ отладить это — просто иметь инструменты Allocations и/или Leaks и каждый раз выполнять действия самостоятельно, и каждый раз, когда вы ошибаетесь (что-то упускаете, делаете что-то не так), убиваете процесс и начинаете сначала.

Самый простой способ — это UI Recorder.

При первой записи с ним он записывает ваши действия (на уровне событий, а не на уровне целевого действия). Движения мыши, щелчки и т. д.

Отличие UI Recorder от других инструментов (и именно поэтому оно вас удивило) заключается в том, что когда вы записываете с его помощью, оно воспроизводит их обратно.

Это не просто раскачивание курсора мыши волей-неволей; это делает то, что вы сделали в первый раз. Каждый раз после того, как вы сделаете что-то в первый раз, UI Recorder сделает за вас то же самое.

Вот для чего предназначен UI Recorder: Идеальная воспроизводимость, обеспечиваемая механическим способом. Он делает то, для чего предназначен; он работает как надо.

И да, отказаться от этого сложно. Я еще не смотрел, но может быть есть глобальная системная горячая клавиша остановки записи, которую вы можете использовать. Есть один, когда инструменты находятся в мини-режиме.

Кроме того, вы можете указать, находится ли UI Recorder в режиме «диск» (воспроизведение) или «запись» в небольшом всплывающем окне, которое появляется при нажатии кнопки (i) для инструмента. Переключите его в режим записи, чтобы перезаписать ваше взаимодействие для получения других результатов в будущих запусках. (Я не знаю, сохраняет ли он записи прошлых прогонов.)

person Peter Hosey    schedule 06.11.2010
comment
Так что это нормально, что UI Recorder выпадает из моего приложения и продолжает воспроизводить мои события внутри самого UI Recorder, щелкая случайные вещи в интерфейсе UI Recorder и все портя, без возможности использовать клавиатуру/мышь без боя. ? Я не выпадал из своего приложения, когда делал запись... только UI-рекордер решает выпасть при воспроизведении. Кажется, что это очень рискованный инструмент, если это нормально. Я использовал Leaks вручную и нашел одну утечку, которая теперь исправлена, но почему это должно вызывать такое поведение? - person d11wtq; 07.11.2010
comment
У меня только что возникла мысль... Я взаимодействовал со строкой меню во время записи. Может быть, это то, что смущает UI Recorder, поскольку, возможно, он воспроизводит эти действия поверх своей собственной строки меню? - person d11wtq; 07.11.2010
comment
d11wtq: Это может быть частью этого; Я не знаю, почему он будет переключать приложения, если только окно не переместилось из того места, где оно было у вас в первый раз. В любом случае, смотрите мое редактирование моего ответа. - person Peter Hosey; 07.11.2010
comment
Я так и не понял, что происходит, и просто вручную управлял инструментом утечки вместо того, чтобы полагаться на запись пользовательского интерфейса. Я ценю ответ, хотя, спасибо. - person d11wtq; 12.11.2010