gdbserver附加到任何进程后,Android设备重新启动

时间:2013-04-26 08:42:40

标签: android android-ndk linux-kernel gdb

我目前正尝试在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  

它们相关吗?感谢。

1 个答案:

答案 0 :(得分:0)

现在找到答案。 该设备使用旧的CPU MSM7225,它没有VFP,但内核内置了VFP。 当gdbserver附加某个进程时,它会尝试在设备中获取一些寄存器集。检索不存在的VFP寄存器时,系统会重新启动。 解决方案:注释掉VFP对内核配置的支持。 现在ndk-gdb正常工作。