Подтвердить что ты не робот

Как я могу получить консольное считывание во время выполнения приложения?

В целях отладки я хотел бы получить доступ к распечаткам консоли во время выполнения таким же образом, как приложение консоли в текущем приложении в App Store (которое можно найти здесь).

Я немного искал документы, и я не могу найти что-либо, предоставленное Apple, но я чувствую, что у меня что-то важное. Любое понимание?

Спасибо.

4b9b3361

Ответ 1

Вы можете сделать это, используя <asl.h>. Вот пример, который я собрал вместе, чтобы создать массив консольных сообщений.

-(NSArray*)console
{
    NSMutableArray *consoleLog = [NSMutableArray array];

    aslclient client = asl_open(NULL, NULL, ASL_OPT_STDERR);

    aslmsg query = asl_new(ASL_TYPE_QUERY);
    asl_set_query(query, ASL_KEY_MSG, NULL, ASL_QUERY_OP_NOT_EQUAL);
    aslresponse response = asl_search(client, query);

    asl_free(query);

    aslmsg message;
    while((message = asl_next(response)) != NULL)
    {
        const char *msg = asl_get(message, ASL_KEY_MSG);
        [consoleLog addObject:[NSString stringWithCString:msg encoding:NSUTF8StringEncoding]];
    }
    if (message != NULL) {
        asl_free(message);
    }
    asl_free(response);
    asl_close(client);

    return consoleLog;
}

Ответ 2

Если ваше устройство подключено к Xcode, вы можете увидеть вывод консоли (NSLog и т.д.) в области отладки:

Если вы запускаете приложение и подключаетесь к Xcode позже, я считаю, что вы можете получить консольные журналы в Organizer.


Изменить: чтобы получить доступ к файлу журнала во время выполнения, вы должны попробовать /var/log/system.log, но даже лучше я рекомендую использовать настраиваемую функцию отладки, которая будет записываться в системный журнал и/или текстовое представление в ваше приложение. (Проверьте NSLogv, что будет полезно при написании функции-обертки.) Это также имеет то преимущество, что вы можете отключить все журналы отладки с одного места (просто измените функцию отладки).