首页 文章

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

提问于
浏览
3

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

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

EDIT

我试过@Jim's suggestion,似乎调试服务器实际上是试图附加但失败了 .
我接受他的答案,因为它是正确的,但我很高兴知道为什么我不能真正调试这个过程 .
仅供参考我想在JB iPhone上调试mdmd(mdm守护程序服务) . 该过程启动几秒钟以与mdm服务器通信,然后死亡 .

这是来自目标的终端:

~root#debugserver :1234 debugserver-310.2 for arm64 . 从端口1234收听来自的连接...获得连接,等待启动或附加的进程信息 . 连接成功,准备调试 . 退出 .

这是来自lldb的:

(lldb)进程连接connect:// localhost:1234(lldb)进程attach --name mdmd --waitfor错误:attach failed:无法附加

2 回答

  • 2

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

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

    这将指示远程调试服务器等待该进程显示,然后它将附加到它 .

  • 0

    这并不直接回答您的问题,但其他人可能会发现它有用 . 在您的越狱设备上(使用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
    

    当你从app-startup开始时,这很棒 . 然而,缺点是lldb无法控制 STDOUT . 不要指望在lldb屏幕上显示 NSLog . 它将显示在 Console.app 上 .

相关问题