zoukankan      html  css  js  c++  java
  • 通过lldb远程调试iOS App

    苹果从Xcode5开始弃用了gcc及gdb, 只能使用llvm用lldb。

    在越狱机上虽然仍然可以使用gdb进行调试,但lldb是趋势。下面就介绍一种通过Wifi或者USB,在Mac上使用lldb对iOS App进行调试的方法。(仅限越狱机)

    1. 在你的Mac上运行下面的命令,装载(mount) Xcode的develop kisk image

    hdiutil attach /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/ DeviceSupport/7.0.3\ \(11B508\)/DeveloperDiskImage.dmg

    2. 拷贝debugserver到某个临时文件夹(我拷贝到Desktop)

    cp /Volumes/DeveloperDiskImage/usr/bin/debugserver .
    

    3.用Xcode创建一个名为entitlements.plist的plist文件。包含以下3个key value键值对:

      Key                         Value

    com.apple.springboard.debugapplications      true
    run-unsigned-code                    true
    get-task-allow                      true
    task_for_pid-allow                   true
    用TextEdit打开内容如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    	<key>com.apple.springboard.debugapplications</key>
    	<true/>
    	<key>run-unsigned-code</key>
    	<true/>
    	<key>get-task-allow</key>
    	<true/>
    	<key>task_for_pid-allow</key>
    	<true/>
    </dict>
    </plist>
    

      

    4. 签名

    codesign -s - --entitlements entitlements.plist -f debugserver
    

    5.  拷贝debugserver到越狱iOS设备

    scp debugserver root@192.168.1.106:~
    

    6. 通过以下命令查看你要调试的程序的进程ID

    ps aux | grep "YouTube"
    

    7. 通过ssh登录到iOS设备,运行以下命令

    ./debugserver *:1234 -a "YouTube"
    

    8. 在Mac终端运行lldb命令后,输入以下2条命令:

    platform select remote-ios
    process connect connect://192.168.2.104:1234
    

    通过wifi调试很慢,有时候"process connect"命令甚至会失败。如果你也遇到这样的情况,你可以通过USB而不是Wifi进行调试。

    1. 首先在你的Mac上下载usbmuxd解压,并运行:

    wget http://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.bz2
    tar xjfv usbmuxd-1.0.8.tar.bz2
    cd usbmuxd-1.0.8/python-client/
    python tcprelay.py -t 1234:1234
    

    2. 这样所有试图链接到localhost:1234的连接都会通过USB被重定向到你的iOS设备的1234端口

      这样,上面第8步中的process connect命令就可以更改如下:

    process connect connect://localhost:1234
    

    然后你就可以像在Xcode中一样用lldb调试了。

    Ref:  

    http://iphonedevwiki.net/index.php/Debugserver   

  • 相关阅读:
    Python实现ftp服务(1)
    MYSQL/HIVESQL笔试题(六):HIVESQL(六)
    Hive基础(16):Hive函数(8) 常用函数
    MYSQL/HIVESQL笔试题(五):HIVESQL(五)
    MYSQL/HIVESQL笔试题(四):HIVESQL(四)
    MYSQL/HIVESQL笔试题(三):HIVESQL(三)
    498. Diagonal Traverse
    493. Reverse Pairs
    1021. Remove Outermost Parentheses
    490. The Maze
  • 原文地址:https://www.cnblogs.com/csutanyu/p/3653252.html
Copyright © 2011-2022 走看看