我目前正尝试在usb界面的旧Android设备(Android 2.2,内核2.6.32)上使用ndk-gdb
进行一些调试工作。每次gdbserver
附加任何进程时,设备都会重新启动,如下所示:
sh-3.2# lib/gdbserver --debug :9999 --attach 479
lib/gdbserver --debug :9999 --attach 479
sigchld_handler
Attached; pid = 479
linux_wait: [Process 479]
linux_wait_for_lwp: <all threads>
my_waitpid (-1, 0x40000000)
my_waitpid (-1, 0x1): status(137f), 479
Got an event from 479 (137f)
...设备现在重新启动
我在/proc/kmsg
和/data/system/dropbox
中找不到任何线索
它与看门狗或其他一些内核配置有关吗?
在内核配置文件中,有:
#CONFIG_MSM_SERIAL_DEBUGGER is not set
CONFIG_MSM_RPCSERVER_WATCHDOG=y
它们相关吗?感谢。
答案 0 :(得分:0)
现在找到答案。 该设备使用旧的CPU MSM7225,它没有VFP,但内核内置了VFP。 当gdbserver附加某个进程时,它会尝试在设备中获取一些寄存器集。检索不存在的VFP寄存器时,系统会重新启动。 解决方案:注释掉VFP对内核配置的支持。 现在ndk-gdb正常工作。