0

我目前正在尝试ndk-gdb通过 USB 接口在旧的 Android 设备(Android 2.2,内核 2.6.32)上进行一些调试工作。每次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我在and中没有发现任何线索/data/system/dropbox
它与看门狗或其他内核配置有关吗?
在内核配置文件中,有:

#CONFIG_MSM_SERIAL_DEBUGGER is not set  
CONFIG_MSM_RPCSERVER_WATCHDOG=y  

它们是否相关?谢谢。

4

1 回答 1

0

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

于 2013-04-30T09:42:32.583 回答