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   

  • 相关阅读:
    机器学习(深度学习)
    机器学习(六)
    机器学习一-三
    Leetcode 90. 子集 II dfs
    Leetcode 83. 删除排序链表中的重复元素 链表操作
    《算法竞赛进阶指南》 第二章 Acwing 139. 回文子串的最大长度
    LeetCode 80. 删除有序数组中的重复项 II 双指针
    LeetCode 86 分割链表
    《算法竞赛进阶指南》 第二章 Acwing 138. 兔子与兔子 哈希
    《算法竞赛进阶指南》 第二章 Acwing 137. 雪花雪花雪花 哈希
  • 原文地址:https://www.cnblogs.com/csutanyu/p/3653252.html
Copyright © 2011-2022 走看看