我正在调试一个(嵌入式)软件。我在一个函数上设置了一个断点,由于某种原因,一旦我到达那个断点并且continue
我总是回到函数(这是一个初始化函数,只能被调用一次)。当我删除断点和continue
时,GDB告诉我:
Program received signal SIGTRAP, Trace/breakpoint trap.
由于我正在使用断点,我假设我陷入了“断点陷阱”。什么是断点陷阱?
答案 0 :(得分:13)
我能想到的另一种可能性是:
1.您的流程正在运行多个主题。
例如 - 2说x&收率
2. 线程y遇到断点,但您有将gdb附加到线程x。
这种情况是跟踪/断点陷阱。
答案 1 :(得分:10)
断点陷阱只是意味着处理器遇到了断点。为什么会发生这种情况有两种可能性。最有可能的是,您的初始化代码被命中,因为您的CPU正在重置并再次点击断点。另一种可能性是,设置断点的代码实际上是在初始化以外的位置运行的。有时使用积极的编译器优化,很难准确判断断点映射到哪个代码以及哪些执行路径可以到达那里。
答案 2 :(得分:1)
我在Visual Studio 2015中运行linux项目并远程调试时出现此问题。我的解决方案是 project_properties - >配置属性 - >调试 - >调试模式并更改" gdbserver"的值到" gdb"
答案 3 :(得分:-3)
如果您使用V BAT作为备用电源且备用电压驱动器低于1.65V,则在连接电源后会出现同样的问题。
在这种情况下,您必须断开所有电源并重新连接正确的电压。然后调试问题就消失了。