5

一直在尝试使用 GDB 远程调试在我的目标上运行的应用程序。目标是基于 Armv6,操作系统是 linux,应用程序是基于 QT 的多线程应用程序。

我可以设置断点。但是当断点被击中时,程序与 SIGTRAP 一起崩溃。

提示:我可以在同一目标上运行另一个小型多线程 QT-App 示例。

可能是什么问题呢?

GDB日志如下

0x4ad52c 处的断点 1:文件 <> , <>。(2 个位置) (gdb) c 继续。

程序以信号 SIGTRAP、跟踪/断点陷阱终止。该程序不再存在。(gdb)

(gdb)

4

2 回答 2

7

您可能在这里有一个解决方案:

http://sourceware.org/gdb/wiki/FAQ#GDB_does_not_see_any_threads_besides_the_one_in_which_crash_occurred.3B_or_SIGTRAP_kills_my_program_when_I_set_a_breakpoint。

希望这有帮助。

问候。

于 2012-08-03T06:54:50.533 回答
1

那么gdb通过ptrace跟踪进程,并且ptrace在线程所在的空间设置断点,空间addr被其他线程共享,如果其他线程到达断点,哦,内核为该线程生成一个sigtrap .

更多信息请参阅 http://lists.alioth.debian.org/pipermail/ltrace-devel/2006-April/000036.html

于 2013-09-28T03:29:28.963 回答