这是实际发生的事情:
如果我在某个地方放了一个断点,它总是在错误的位置上断裂。如果我重新启动调试会破裂在同一错误的位置
有更多信息:
我如何解决?
eDit
aadly,K_Trenholm建议的解决方案对我不起作用。我将3个“ NOP”放在一个功能中,但它没有您建议的工作。请参阅下图:
但我得到的:
我想补充一点,我尝试了各种分支的组合。无论我做什么,该程序总是在同一情况下停在同一情况下,如上图所示。
感谢您的答复,甚至对如何解决它有任何想法非常有帮助。 如果您还有其他想法,如果您会分享它们,我将非常感谢! 1)编译器优化会导致调试时断点位置/值的问题。 调试时,请关闭优化(如果可能的话,在您的示例中,您在代码大小方面在天花板上抬起)。2)断点“打滑”。 请参阅
Http://microchipdeveloper.com/tls0201:Skid-Effect#top-of-page
从我所看到的,一种解决这个问题的方法是在您打算放置断点的行之后放置几个NOP说明。 这将确保任何“打滑”不会执行更多代码。
断裂的指令将始终完全执行,并且管道中未决的任何内容也将执行。对于单个周期说明,这增加了一个指令。对于多个周期说明和分支,它增加了多个周期。因此,如果您想避免 要将调试器跳入子例程中,您必须在断点后面包括一些。
示例:
对使用的MCU进行取决于调试器将在击中断点时引入“打滑效果”。在停止之前,调试会议最多将执行两个额外的说明。