Xcode отлаживает контрольные точки при запуске приложения из-за пределов Xcode

Вопрос в нижней строке: возможно ли, что Xcode ожидает запуска приложения, а затем запустите приложение из-за Xcode, а затем остановите Xcode в точке останова?

- подробное описание ниже -

Я хотел бы отлаживать (шаг за шагом по строке) простую программу на C, которая требует, чтобы текст был отправлен в stdin с использованием Xcode 4.6.3 в 10.8.5.

Чтобы сделать это, мне нужно запустить программу, как это $ cat in.txt |./mysimpleprogram > out.txt и отключить отладчик Xcode в точке останова.

Я выполнил инструкции, которые я нашел в этом ответе qaru.site/info/257859/..., но Xcode не останавливается на контрольных точках.

Чтобы воспроизвести проблему

  • Открыть Xcode 4.6.3

  • На экране "Добро пожаловать в Xcode" выберите "Создать новый проект Xcode"

  • На экране "Выбрать шаблон для вашего нового проекта" выберите "Mac OS X → Приложение → " Инструмент командной строки ", затем нажмите" Далее "

  • В окне "Выбрать параметры для вашего нового проекта:" Название продукта: HelloWorld, Тип: C → Далее, Использовать автоматический подсчет ссылок = False

  • Выберите место для проекта.

Примечание. В настройках Xcode → Местоположение → Производные данные, я выбрал "Относительный"

  1. Перейдите в меню продукта → Схема → Изменить схему

  2. В левой части окна редактирования схемы, по умолчанию выбран "Запустить HelloWorld Debug". Справа от окна редактирования схемы я изменил переключатель "Запустить автоматически" на "Подождите, пока HelloWorld запустит". Debugger = LLDB, Debug Process As = me

  3. Задайте одну или несколько точек останова в коде.

  4. Выберите продукт → Выполнить (или нажмите кнопку воспроизведения). Теперь в главном окне Xcode говорится: "Ожидание запуска HelloWorld".

  5. Откройте окно терминала и перейдите к исполняемому файлу HelloWorld, в моем случае... /HelloWorld/DerivedData/HelloWorld/Build/Products/Debug/

  6. запустите программу с помощью команды. /HelloWord

Программа запускает и печатает Hello, World! как и ожидалось, Xcode говорит "Законченный запуск HelloWorld: HelloWorld". Он не останавливался ни на одном из контрольных точек.

Желаемое поведение, Xcode должно остановиться на контрольных точках и позволить мне пройти через код.

Спасибо за любую помощь или подсказки.

Ответ 1

В то время, когда отладчик замечает и присоединяется к процессу, процесс процесса проходит мимо точек останова. Чтобы получить детерминированное поведение от отладчика в этой настройке, вам необходимо приостановить выполнение вашего процесса до первой точки останова и дождаться присоединения отладчика. Простым способом сделать это является добавление кода для отправки сигнала STOP:

raise(SIGSTOP);

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