ios - 如何在模拟器上运行的应用程序上将 lldb 作为独立调试器启动?

标签 ios xcode ios-simulator lldb simctl

我的问题是对 How can I use Swift REPL with iOS SDK 的跟进:我希望能够进入 iOS 项目中的 REPL 并使用那里定义的类。

我已经构建了该项目并且它正在模拟器上运行:

enter image description here

现在,我想按照上述答案中引用的这些命令为 iOS 项目启动一个独立的 LLDB 调试器:

$ 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和?

更新

正如 Josh Caswell 所指出的,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无法附加到应用程序的进程?

最佳答案

$DerivedData只是项目的派生数据目录的路径。默认为 ~/Library/Developer/Xcode/DerivedData 可以在 Xcode 设置中查看当前值:

Xcode settings, "Locations" tab, showing Derived Data setting

您的项目将在那里有自己的目录,这是第一个 $AppName . $AppName$AppName.app是项目设置中目标的产品名称,除非您弄乱了这些设置,否则它应该只是“应用程序的名称”。

您也可以get the values for your project using xcodebuild :xcodebuild -project myapp.xcodeproj -showBuildSettings

关于ios - 如何在模拟器上运行的应用程序上将 lldb 作为独立调试器启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54757473/

相关文章:

swift - Swift 5.1 中的递归枚举问题

ios - xcode 和 Storyboard : how build an user profile view

objective-c - 我的应用崩溃了,但是可以在模拟器上运行

ios - SwiftUI : Segue navigation

ios - 如何从网页启动照片应用程序

ios - SQLite 数据库崩溃

iphone - 从其 contentViewController 中关闭 UIPopoverController?

ios - 无法识别的选择器发送到实例错误 - 我的错误在哪里?

ios - admob 测试广告 -> 没有广告可显示

ios - 为所有设备调整 iOS App Preview 的大小