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

Ios 使用lldb进行远程调试-等待进程,ios,macos,remote-debugging,lldb,Ios,Macos,Remote Debugging,Lldb,我知道如何等待并附加到本地进程(processattach--name procname--waitfor)。 我还知道如何运行远程debugserver并连接到它 但我如何才能等待进程在远程主机上启动并连接到它呢 编辑 我已经尝试过了,调试服务器似乎正在尝试连接,但失败了。 我接受他的答案,因为它是正确的,但我很高兴知道为什么我不能真正调试这个过程。 仅供参考,我正在尝试在JB iPhone上调试mdmd(mdm守护程序服务)。进程启动几秒钟以与mdm服务器通信,然后停止 这是来自目标的终端:

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

但我如何才能等待进程在远程主机上启动并连接到它呢

编辑

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

这是来自目标的终端:

~root#debugserver*:1234
用于arm64的debugserver-310.2。
正在侦听端口1234以获取来自*..的连接
已建立连接,正在等待启动或连接的进程信息。
连接成功,准备调试。
退出

这是来自lldb的:

(lldb)进程连接connect://localhost:1234
(lldb)进程附加--名称mdmd--等待
错误:附加失败:无法附加


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

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

这将指示远程调试服务器等待该进程出现,然后它将连接到该进程

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

这使您能够在越狱设备上通过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
macOS机器上的
###
iproxy 6666&(通过谷歌“iproxy”查找安装说明)
###论越狱装置
root#/Developer/usr/bin/debugserver localhost:6666-waitforappname
<现在打开应用>
###在macOS机器上
lldb
(lldb)进程连接connect://localhost:6666

这是伟大的,因为你开始在应用程序启动。但是,缺点是lldb不能控制标准输出。不要期望
NSLog
显示在lldb屏幕上。它将显示在
控制台上。app

通常守护进程会将自身标记为不可调试,因此在任何最近基于达尔文的系统上,我希望连接被拒绝。例如,如果您尝试在OSX上执行此操作,即使是作为root用户,您也会得到相同的错误。但我没有任何越狱设备的经验,你知道吗?我也有类似的问题。我在Linux上运行lldb客户端,在Android上运行lldb服务器,如果这有区别的话。