我一直在尝试使用GDB远程调试我的目标上运行的应用程序。目标是基于Armv6的,操作系统是Linux,应用程序是基于QT的多线程应用程序。
我能够设置断点。但当断点被命中时,程序会崩溃并且出现SIGTRAP信号。
提示:我能够在同一个目标上运行另一个小型的多线程QT应用程序。
问题可能是什么?
GDB日志如下:
在0x4ad52c处设有断点:文件<>,<>。(2个位置) (gdb) c 继续执行。
程序因SIGTRAP信号而终止,跟踪/断点陷阱。 该程序不再存在。 (gdb)
好的,gdb使用ptrace跟踪进程,并在线程空间中设置断点,该空间地址被其他线程共享,如果其他线程到达断点,内核将为该线程生成一个sigtrap信号。
更多信息请见下面链接: http://lists.alioth.debian.org/pipermail/ltrace-devel/2006-April/000036.html