xcode — Куда выводится вывод C ++ stderr в OSX?

Я работаю с кодом Objective-C ++, который запускает фоновый процесс из моего основного приложения. Фоновый процесс не имеет графического интерфейса, запускается только на мгновение и должен быть запущен из основного приложения, чтобы он был полезен. Это означает, что я не могу легко подключиться к фоновому процессу с помощью Xcode или запустить его автономно, поэтому мне нужно полагаться на вывод в stderr.

В этом случае, где я должен искать выход stderr?

Больше информации, если я задаю неправильный вопрос: я использую старую версию Xcode (3.2.6) по причинам, связанным с возрастом поддерживаемого мной проекта. Я работаю над кодом обработки исключений / создания отчетов, что затрудняет пошаговое выполнение кода, поскольку GDB любит перехватывать исключения, а не позволять моему коду делать это. Фоновый процесс запускается только тогда, когда в основном приложении возникает структурированное исключение.

Выдержка из результатов команды lsof в моем главном приложении, может быть уместна:

COMMAND   PID  USER       FD     TYPE  DEVICE   SIZE/OFF  NODE NAME
<appname> 2788 <username> 0r     CHR   3,2           0t0   311 /dev/null
<appname> 2788 <username> 1w     CHR   3,2      0t473379   311 /dev/null
<appname> 2788 <username> 2w     CHR   3,2     0x6d545f8   311 /dev/null

2

Решение

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

lsof -a -p <your pid> -d 0,1,2

Когда запускается фоновый процесс, обычно дочерний процесс присоединяется к тем же стандартным потокам, что и родительский процесс. Для обычных приложений Какао по умолчанию вы должны увидеть этот вывод в Console.app в разделе «все сообщения» или «сообщения консоли».

До Mountain Lion вы также могли просматривать вывод сервисов launchd там, но я считаю, что с тех пор launchd перенаправляет stdout и stderr в / dev / null.


Это означает, что я не могу легко подключиться к фоновому процессу с помощью XCode или запустить его автономно

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

Отладчику Xcode также может быть приказано дождаться запуска определенного процесса и подключиться к нему.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]