程序接收信号SIGTRAP,跟踪/断点陷阱

Ran*_*lue 18 c embedded gdb arm

我正在调试一个(嵌入式)软件.我已经在一个函数上设置了断点,并且由于某种原因,一旦我到达了该断点并且continue我总是回到函数(这是一个初始化函数,应该只调用一次).当我删除断点时continue,GDB告诉我:

Program received signal SIGTRAP, Trace/breakpoint trap.

由于我正在使用断点,我假设我陷入了"断点陷阱".什么是断点陷阱?

小智 13

我能想到的另一种可能性是:

1.您的进程正在运行多个线程.

例如 - 2说x&y.

2. 线程y命中断点但你已经将gdb附加到线程x.

这种情况是跟踪/断点陷阱.

  • 当使用分析测试用例的单元测试框架时,这是一种常见的症状.很高兴知道! (3认同)

TJD*_*TJD 10

断点陷阱只意味着处理器遇到了断点.为什么会发生这种情况有两种可能性.最有可能的是,您的初始化代码被命中,因为您的CPU正在重置并再次点击断点.另一种可能性是,设置断点的代码实际上是在初始化以外的位置运行的.有时使用积极的编译器优化,很难确切地确定断点映射到哪个代码以及哪些执行路径可以到达那里.