如何在Xcode LLDB中为应用启动之初设置断点?操作失败求助
问题分析与解决方法
你的操作错误很明确:把LLDB调试器的启动参数当成了应用程序的运行参数。Xcode的Run Debug设置里的「Arguments Passed On Launch」是传给你自己开发的App的参数,不是给LLDB调试命令用的——LLDB根本没收到--stop-at-entry这个指令,自然不会在应用入口处停下。
下面给你三种靠谱的解决方式,按需选择:
方式一:直接在Debug Console里执行LLDB命令
- 如果当前App正在运行,先点击Xcode工具栏的停止按钮结束会话
- 在底部的Debug Console里输入:
要是你的App需要传运行参数,就在后面加process launch --stop-at-entry--再加参数,比如:
执行后,App会在加载完成但未执行任何代码的状态停下。process launch --stop-at-entry -- -v --log-path /tmp/app.log
方式二:配置Xcode Scheme,让每次启动自动停在入口
- 点击Xcode顶部工具栏的Scheme名称(比如你的App名字),选择「Edit Scheme」
- 在弹出的窗口里切换到「Run」→「Arguments」标签页
- 找到下方的「LLDB Startup Commands」区域,点击+号,添加命令:
process launch --stop-at-entry - 关闭Scheme设置窗口,之后每次点击调试启动按钮,LLDB都会自动执行这个命令,帮你停在应用入口。
方式三:添加符号断点到start函数(更直观)
start是系统加载完App二进制后调用的第一个函数,比main还要早,完全符合你要的「加载完成未执行代码」的状态:
- 打开左侧面板的Breakpoint Navigator(那个断点图标)
- 点击左下角的+号,选择「Symbolic Breakpoint」
- 在「Symbol」输入框里填
start,其他保持默认,点击「Done」 - 启动调试,App会自动停在
start函数的第一行。
内容的提问来源于stack exchange,提问作者pilokenorse
相关产品推荐
相关产品推荐

