书上第74页起 有关gdb的问题

书上第74页起 有关GDB的问题:
1。看书上75页,每当跳到一个断点后,如图4-16,图4-22,图4-23,我看作者都写了
gdb$ c
,于是 我也运行了这个,但是 输入
gdb$ b *(0x5000)
Breakpoint 1 at 0x5000
gdb$ c

之后 没有任何反应,然后输入 ni ,看见他是直接顶行的,连gdb$ 都没有,这时,按 quit 等命令都不起作用。
ni

  1. 遇到这样的情况
    gdb) b *(0x8000+0x2be010b4)
    Breakpoint 1 at 0x2be090b4
    (gdb) n
    Single stepping until exit from function close$NOCANCEL,
    which has no line number information.
    0x3b7a2f42 in fclose ()
    (gdb) info b
    Num Type Disp Enb Address What
    1 breakpoint keep s 0x2be090b4

我本想执行 0x8000+0x2be010b4 , 此时,已经设了一个断点,但是 输入 命令 n 时, 跳到0x3b7a2f42,而此时查询只有一个断点啊,请问 这是为何?
关手机、重启电脑,也是这样。

在iOS 6以后,GDB没有维护,已经非常buggy了,建议你更换LLDB + debugserver来动态调试;
关于问题1,我想是因为你c了之后程序直接continue了,没有任何反应就对了,此时除非断点得到触发,否则进程应该是不会断下来的;
问题2呢,因为n是下一行程序代码的意思,而不是下一行汇编代码,而你调试的二进制文件应该是不带有程序代码的,所以n执行失败了,因为GDB的bug,进程就不知道执行到哪里去了(也有可能出现异常了)。你改用ni试试。
总之,我建议你更换使用LLDB,相关的教程也会更新在书的第二版里,给你造成的不便敬请谅解

感谢您的回复, 我看了您的有关 LLDB + debugserver来动态调试 的帖子, 我有台白苹果,但是比较旧, OS只能装到 10.6.8 , 不知道这样能用 LLDB 否, 另外, gikdbg 这个能代替gdb不?

我记得Mavericks的虚拟机已经出来了,你可以找找看,10.6的OSX不知道能不能装Xcode 5.x,如果可以的话就可以用LLDB。
gikdbg我用过,但那时这个调试器还处在beta阶段,有些不稳定,你可以在gikdbg的版块里给作者留言,问问他具体事项

好的 谢谢!