使用 lldb 进行远程调试 - 等待进程

Remote debugging with lldb - wait for process

我知道如何等待并附加到本地进程 (process attach --name procname --waitfor)。
我也知道如何 运行 远程 debugserver 并连接到它。

但是我如何才能等待进程在远程主机上启动并附加到它?

编辑

我已经尝试 ,似乎调试服务器实际上正在 尝试 附加但 失败
我接受他的回答,因为它是正确的,但我很高兴知道为什么我不能真正调试这个过程。
仅供参考,我正在尝试在 JB iPhone 上调试 mdmd(mdm 守护进程服务)。该进程启动几秒钟以与 mdm 服务器通信,然后结束。

这是来自目标的终端:

~ root# debugserver *:1234
debugserver-310.2 for arm64.
Listening to port 1234 for a connection from *...
Got a connection, waiting for process information for launching or attaching.
Attach succeeded, ready to debug.
Exiting.

这是来自 lldb 的:

(lldb) process connect connect://localhost:1234
(lldb) process attach --name mdmd --waitfor
error: attach failed: unable to attach

执行此操作的最简单方法是仅使用要连接的端口而不使用其他参数来启动远程调试服务器。在那种模式下,它完全由连接到它的 lldb 驱动。那么就这样做:

(lldb) process attach --name procname --waitfor

这将指示远程调试服务器等待该进程出现,然后它会附加到它。

这不会直接回答您的问题,但其他人可能会觉得它有帮助。在您的越狱设备(使用 Electra iOS11 JB)上,您可以以稍微不同的顺序发出 wait-for...

这使您能够在越狱设备上通过 USB 进行调试。

### On macOS machine
iproxy 6666 6666 &  (google `iproxy` to find setup instructions)

### On Jailbroken device
root# /Developer/usr/bin/debugserver localhost:6666 -waitfor APPNAME
< now open the app >

### on macOS machine
lldb
(lldb) process connect connect://localhost:6666

从应用程序启动开始,这非常棒。但是,缺点是lldb不控制STDOUT。不要期望 NSLog 显示在 lldb 屏幕上。它将显示在 Console.app.