ios - 如何在模拟器上运行的应用程序上将 lldb 作为独立调试器启动?
问题描述
我的问题是如何将 Swift REPL 与 iOS SDK 一起使用的后续问题:我希望能够进入 iOS 项目中的 REPL 并使用其中定义的类。
我已经构建了该项目,并且它正在模拟器上运行:
现在,我想为 iOS 项目启动一个独立的 LLDB 调试器,遵循上面答案中引用的这些命令:
$ xcrun lldb -- $DerivedData/$AppName/Build/Products/Debug-iphonesimulator/$AppName.app
(lldb) process attach --name '$AppName' --waitfor
但是,我不清楚用什么来代替$DerivedData
and $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 设置中查看当前值:
您的项目将在那里有自己的目录,这是第一个$AppName
. $AppName
in$AppName.app
是项目设置中目标的产品名称,除非您一直在弄乱这些设置,否则它应该只是“应用程序的名称”。
您还可以使用以下方法获取项目的值xcodebuild
:xcodebuild -project myapp.xcodeproj -showBuildSettings
推荐阅读
- sql - 有没有办法选择带有 ST_INTERSECTS 限制的 SUM?
- .net - 如何编译CoreCLR(编译问题)?
- flutter - 有没有办法让容器的宽度大于 Flutter 中的屏幕?
- c# - Xam.Plugins.Settings CrossSettings.Current 中断单元测试
- plot - 用trace32的ITM做子图很热
- tensorflow - 需要有关在 segmentation_models API 中使用预训练权重的指导
- mysql - 在 group by 中获取具有正确报价 ID 的最高报价并加入查询
- arrays - 角度计算输入字段的总和
- android - RxJava 行为主题订阅
- javascript - 循环 Redux 状态时映射未定义