Как запустить lldb в качестве автономного отладчика в приложении, запущенном на симуляторе? - PullRequest
0 голосов
/ 19 февраля 2019

Мой вопрос является продолжением Как я могу использовать Swift REPL с iOS SDK : я бы хотел иметь возможность войти в REPL в проекте iOS и использовать определенные там классы.

Я уже построил проект, и он работает на симуляторе:

enter image description here

Теперь я хотел бы начатьавтономный отладчик LLDB для проекта iOS, следуя этим командам, приведенным в ответе выше:

$ xcrun lldb -- $DerivedData/$AppName/Build/Products/Debug-iphonesimulator/$AppName.app
(lldb) process attach --name '$AppName' --waitfor

Однако мне неясно, что заменить $DerivedData и $AppName.Краткое руководство LLDB, https://developer.apple.com/library/archive/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-terminal-workflow-tutorial.html,, мне тоже мало чем помогло, так как в примере просто указан путь без объяснения того, как вы его получили.

Я также пытался следовать ответам наhttps://apple.stackexchange.com/questions/171752/ios-simulator-installed-app-location-in-xcode-6-1, Я попытался выполнить поиск в расположении ниже, но не нашел его там:

$ find . -name '*app'
./Developer/Library/Xcode/Agents/XCTRunner.app
$ pwd
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform

Как мне найти .app, который работает на симуляторе для запуска lldb с?

Обновление

Как указал Джош Касвелл, DerivedData находится в моем домашнем каталоге, и там я могу найти приложение, которое предположительно работает на симуляторе:

$ cd ~/Library/Developer/Xcode/DerivedData
$ find . -name '*Venmo.app'
./VenmoWorkspace-apbzqcexodswkdfenhxlkpnlmvsx/Build/Products/Debug-iphonesimulator/Venmo.app

Единственная проблема состоит в том, что если я пытаюсь запустить команду repl, я получаю error: Can't run the REPL without a live process.:

$ lldb ./VenmoWorkspace-apbzqcexodswkdfenhxlkpnlmvsx/Build/Products/Debug-iphonesimulator/Venmo.app
(lldb) target create "./VenmoWorkspace-apbzqcexodswkdfenhxlkpnlmvsx/Build/Products/Debug-iphonesimulator/Venmo.app"
Current executable set to './VenmoWorkspace-apbzqcexodswkdfenhxlkpnlmvsx/Build/Products/Debug-iphonesimulator/Venmo.app' (x86_64).
(lldb) repl
error: Can't run the REPL without a live process.

Почему приложение, запущенное в симуляторе, не '«как живой процесс»?

Обновление 2

Внимательно читая инструкции, похоже, мне сначала нужно подключиться к процессу:

(lldb) process attach --name 'Venmo' --waitfor

ПроблемаТеперь эта команда «висит».Есть идеи, почему lldb не может подключиться к процессу приложения?

1 Ответ

0 голосов
/ 19 февраля 2019

$DerivedData - это просто путь к каталогу производных данных вашего проекта.По умолчанию для этого используется ~ / Library / Developer / Xcode / DerivedData. Текущее значение можно увидеть в настройках Xcode:

Xcode settings,

В вашем проекте будет свой собственный каталог, в которомпервый $AppName.$AppName in $AppName.app - это название продукта цели из настроек проекта, которое должно быть просто «названием приложения», если вы не работали с этими настройками.

Вы также можете получить значения для вашего проекта, используя xcodebuild: xcodebuild -project myapp.xcodeproj -showBuildSettings

...