Есть ли способ захватить вывод NSLog на iPhone, когда он не подключен к отладчику? - PullRequest
13 голосов
/ 09 января 2009

Я записываю кучу данных с NSLog(). Есть ли способ захвата данных журнала, когда мой iPhone не подключен к моей машине разработки и работает под отладчиком?

Например, могу ли я перенаправить его в файл, а затем прочитать файл журнала через XCode позже? Мне нужно сделать это, чтобы протестировать мое приложение при плохом WiFi, что требует, чтобы я уходил далеко от своего стола.

Ответы [ 4 ]

28 голосов
/ 09 января 2009

Приведенный ниже метод создаст имя файла «console.log» в папке «Документы» вашего приложения, чтобы вы могли позже прочитать его.

Вызовите этот метод в начале вашей программы:

- (void) redirectConsoleLogToDocumentFolder
{
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *documentsDirectory = [paths objectAtIndex:0];
  NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"];
  freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
}

Журнал никогда не будет удален, поэтому используйте его с осторожностью.

После того, как вы проверили свое приложение в полевых условиях, снова подключите телефон к компьютеру Mac, в Xcode откройте органайзер. На панели «Сводка» у вас есть список всех приложений на вашем телефоне. Разверните тот, который вы отлаживаете, и вы увидите пакет с именем «Данные приложения».

Нажмите на стрелку справа от своего имени и сохраните это. В конце вы получите папку с именем вашего идентификатора пакета и датой.

Внутри этой папки вы найдете папку с документами, которая должна содержать console.log

17 голосов
/ 09 января 2009

Я почти уверен, что вызовы NSLog () будут записываться в журнал системной консоли, поэтому, если вы подключите свой iPhone к компьютеру после того, как будете отключены, вы сможете просмотреть журнал консоли в XCode Organizer. Единственное предостережение в том, что размер журнала консоли ограничен, поэтому старые записи могут быть удалены, если вы ведете много журналов.

5 голосов
/ 20 июня 2011

Существует также приложение Console в App Store, но оно работает только для iOS 6 и более ранних версий.

Когда вышла iOS 7, фактически перестала работать . (Теперь он может читать только собственные журналы консоли, а не журналы всей системы.)

2 голосов
/ 14 ноября 2009

Марк Новаковски прав. Вывод на консоль регистрируется на телефоне, и когда вы подключаете свой Mac к своему телефону, вывод на консоль становится доступным в окне органайзера.

Просто выберите ваш телефон на панели устройств и выберите вкладку консоли. Недавний вывод консоли будет прямо здесь. Очень круто.

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

Кстати, у меня есть решение для проверки слабых сигналов WiFi. Просто оберните телефон алюминиевой фольгой, а USB-кабель торчит из упаковки. Если вы работаете с ним, вы можете пошагово пройти код в отладчике. Вы не можете манипулировать пользовательским интерфейсом, но вы можете ухудшить / устранить радиосигналы, такие как 3D, WiFi и GPS. Если вы хотите снизить уровень сигнала, но не отменить его полностью, возможно, вам придется поэкспериментировать с частичным накрыванием телефона фольгой, с небольшими отверстиями в покрытии и т. Д.

Одно предупреждение: не оставляйте телефон завернутым в фольгу более чем на несколько минут за раз. Вероятно, он перегреется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...