一步一步用debugserver + lldb代替gdb进行动态调试

我在ios设备上的/Developer,找不到/usr/bin/debugserver这东西啊,怎么回事?

要先连一次xcode,把iDevice设成调试机才有

在Mac上:
HanmatoiMac:DBG hanjideng$ /opt/theos/bin/ldid -Sent.xml debugserver
长时间没反应呀怎么解决?

问题解决了,原来以前下载的那个ldid不好用,得从楼主给的链接下才行

换帖子里提到的那个ldid,应该就可以了

lldb啊,值得研究的东西

facebook开源了一些lldb的自定义命令脚本,python写的,https://github.com/facebook/chisel

1 个赞

ldid/ldid.cpp(392): _assert(false); errno=0 这是怎么回事呢 ?照着你命令ldid -S ent.xml debugserver (xml和debug放在当前目录下),后面自己把debugserver直接拉进去ipad 出现这错误:/usr/bin root# debugserver *:1234 -a “SpringBoard”
debugserver-300.2 for armv7.
Attaching to process SpringBoard…
error: failed to attach to process named: “” unable to start the exception thread 求大神解释~~

你的命令貌似是输错了,仔细看看同我说的有什么区别

楼主 一般都用哪个好用的IDE工具呢

我都用Xcode,越狱开发时也用MacVim

嗯谢谢 我想问 反编译 查看动态汇编的工具 用哪个

静态IDA,动态LLDB

taro-newteki-iPod:~ root# debugserver *:1234 -a “SpringBoard”
-sh: /usr/bin/debugserver: Permission denied

按照楼主说的一步一步,到这里的时候出现这个问题。

自己搞定了。

cd /usr/bin

chmod 777 debugserver

7.1 beta3 直接ldid 就可以调试了。

我7.1 beta3 的,直接弄倒/usr/bin 下,报下面错误“error: failed to attach to process named: “” unable to start the exception thread” ,上面的签名应该就是给lldb 赋予,调试权限吧

安照操作,最后下得断点,是下面这样的,有点晕,睡了。
“Process 26 stopped

  • thread #1: tid = 0x0225, 0x00101aac SpringBoard, queue = ‘com.apple.main-thread’, stop reason = instruction step over
    frame #0: 0x00101aac SpringBoard
    → 0x101aac: strmi r11, [r4], -lr, lsl #1
    0x101ab0: sbcshs pc, r6, r9, asr #4
    0x101ab4: eorseq pc, r1, r0, asr #5
    0x101ab8: ldrbtmi r4, [r8], #-1557

你试试看“c”能不能resume进程?

可以的,感觉像是指令解析错误了。

stop reason = instruction step over

没有报错,更像是你“ni”了之后的结果

楼主
(lldb) po [UIApplication sharedApplication] windows] objectAtIndex:0] recursiveDescription]
2014-04-17 09:37:28.732 xxxx[870:60b] -[UILabel length]: unrecognized selector sent to instance 0x14648fb0
error: Execution was interrupted, reason: internal ObjC exception breakpoint(-3)…
The process has been returned to the state before expression evaluation.

报以上错,是什么原因呢?