一直在尝试使用 GDB 远程调试在我的目标上运行的应用程序。目标是基于 Armv6,操作系统是 linux,应用程序是基于 QT 的多线程应用程序。
我可以设置断点。但是当断点被击中时,程序与 SIGTRAP 一起崩溃。
提示:我可以在同一目标上运行另一个小型多线程 QT-App 示例。
可能是什么问题呢?
GDB日志如下
0x4ad52c 处的断点 1:文件 <> , <>。(2 个位置) (gdb) c 继续。
程序以信号 SIGTRAP、跟踪/断点陷阱终止。该程序不再存在。(gdb)
您可能在这里有一个解决方案:
希望这有帮助。
问候。
那么gdb通过ptrace跟踪进程,并且ptrace在线程所在的空间设置断点,空间addr被其他线程共享,如果其他线程到达断点,哦,内核为该线程生成一个sigtrap .
更多信息请参阅 http://lists.alioth.debian.org/pipermail/ltrace-devel/2006-April/000036.html