#xcode #lldb
#xcode #lldb
Вопрос:
Используя Debug -> Attach to Process by PID or Name...
в Xcode 8, я могу дождаться запуска программы, прежде чем присоединять к ней lldb, как process attach --name FOO --waitfor
в командной строке.
Точно так же, как при запуске программы, командная строка приостанавливает работу программы при ее запуске, отбрасывая ее куда-нибудь в или macho
или dyld
. Оттуда я могу установить точки останова, а затем продолжить (или в основном запустить) программу и начать отладку.
Однако Xcode успешно подключается к программе, но немедленно продолжает выполнение. Из-за этого я не могу установить точки останова в ранних частях логики запуска.
Есть ли какой-либо способ либо добавить точки останова перед подключением, либо запретить Xcode автоматически возобновлять процесс?
Ответ №1:
В Xcode нет возможности не продолжать автоматически после присоединения. Однако есть несколько способов вставить ваши точки останова.
Если процесс, к которому вы подключаетесь, является процессом, который вы создали с помощью проекта Xcode, то вы можете отредактировать схему запуска этого проекта и на Info
вкладке установить Launch
значение Wait for Executable to launch
затем нажать Run
. Это сообщает Xcode, что объект, к которому вы подключаетесь, получает свои точки останова из этого проекта и устанавливает их перед продолжением. Затем просто установите файловые и строчные или символические точки останова в Xcode, и все в порядке.
Если вы не можете этого сделать, вы можете использовать тот факт, что точки останова, установленные в файле ~/.lldbinit, копируются во все новые цели, которые отлаживаются lldb. Это еще один способ принудительно ввести некоторые точки останова в сеанс отладки Xcode. Так что просто установите там свои точки останова, и они должны быть зафиксированы при присоединении.