This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TM4C123GH6PM:CCS 调试器停止在幻象断点、除非内存浏览器可见

Guru**** 2952510 points

Other Parts Discussed in Thread: EK-TM4C123GXL

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/955096/ccs-tm4c123gh6pm-ccs-debugger-stops-at-phantom-breakpoints-unless-memory-browser-is-visible

器件型号:TM4C123GH6PM
主题中讨论的其他器件:TM4C123、 EK-TM4C123GXL

工具/软件:Code Composer Studio

我正在开发一个大型复杂程序、该程序在几个月前变得很难调试、因为调试器开始在看似随机的"虚拟断点"处频繁停止(在运行不到一秒后)。  让 IT 部门继续运行始终如一。  如果我按下"Stop"来断开调试器的连接、程序运行正常。  禁用所有断点没有帮助。  删除我设置的所有断点没有帮助。  这一故事有很多内容、但可能无关紧要、因此如果需要、我将跳到结尾和后轨道。  

今天、我将调试视图中的其中一个窗格从显示表达式切换到显示存储器浏览器(以便我可以检查堆栈使用情况)、它开始运行良好、在有意的断点处中断、但从不在"虚拟"断点处中断。  切换回 Expressions 选项卡会重新显示虚拟断点。  我怀疑 CCS 中存在时序问题、但不知道如何进一步解决。  我使用的是直接(无 USB 集线器)连接到 PC 正面的 TM4C123 Launchpad。

显示内存浏览器是解决我的问题的简单方法、但如果有人告诉我如何继续、我很乐意帮助跟踪根本问题。

Steve

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Steve、

    这当然是一个奇怪的问题,特别是因为似乎对一种观点(表达)是具体的。 您使用的 CCS 确切版本是什么? 该问题是否发生在任何程序中、还是仅发生在特定程序中?

    您还可以尝试使用新的清理工作区文件夹来查看它是否有用?

    谢谢

    Ki  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复、Ki。

    tl;DR 表达式视图中的特定条目显然会导致虚拟断点。 删除并重新创建它似乎可以解决问题。

    >这当然是一个奇怪的问题,特别是因为似乎是一种观点(表达式)的特定问题。

    我对此做了更多的测试。 在断点被禁用并且存储器浏览器可见的情况下、我启动了程序。 它运行正常(无虚拟断点)。 我在内存浏览器运行时将选项卡切换到表达式、并立即在虚拟断点处停止。 我单击了几次"Resume";它始终在不到一秒的时间内停在虚拟断点处。 我切换回内存浏览器选项卡、然后点击 Resume;它连续运行、不会中断。

    然后、我将带有"Expressions"选项卡的存储器浏览器从窗格中拖动到不同的窗格中、并选择了其中的每个选项卡、以便在两个窗格中的每个选项卡中都可以看到一个选项卡。 它在虚拟断点处停止。 因此、使存储器浏览器可见显然不是使其持续运行的原因。

    我通过将该窗格切换到"Registers"选项卡来隐藏表达式;它连续运行。 在运行时、我切换回"Expressions"选项卡;它几乎立即命中幻象断点。 这是可重复的。 因此 、显示表达式选项卡是使其在虚拟断点处停止的原因。  "我的表达式"选项卡如下所示:


    我开始一次删除一个表达式、从末尾开始、检查在删除每个表达式后它是否仍然在虚拟断点停止:

    • pDeviceLIS2DW12->pLIS2DW12变量->加速度_X
    • OperatorMenuState
    • Last 菜单信息

    删除 LAST_pMenuInfo 使其能够连续运行。 我重新添加了它;它仍然连续运行。 我重新添加了其他内容、并使其连续运行。 我将浏览器选项卡重新排列回它们的原始状态、并使其连续运行。 我停止并重新启动了调试会话、退出并重新启动了 CCS;没有发现任何问题会导致问题再次出现。 因此、似乎删除并重新创建 last_pMenuInfo 的表达式解决了问题。

    >您使用的 CCS 确切版本是什么?

    版本:10.0.00010

    >是否有任何程序或仅此特定程序出现此问题?

    我只负责这个问题、但我想我可以用另一种方式回答您的问题。 有一次、我尝试返回到同一程序的旧版本(使用版本控制历史记录)、发现一些旧版本不会导致虚拟断点、而较新版本不会导致虚拟断点。 我计划最终花时间跟踪导致它的特定源代码更改。 但与此同时、我在另一台 PC 上工作了一段时间、注意到它没有同样的问题、即使在使用相同版本的 CCS、源代码、目标硬件、USB 电缆等时也是如此 因此、问题似乎与  源代码的版本 和 用于调试它的 PC 都相关。

    此外、对于软件的一个版本、我发现如果我通过多次单击 Resume 使其运行(间歇性)、并且在运行时、我将软件置于特定状态(在 LCD 上显示特定菜单)、它将在虚拟断点停止。 然后、我可以返回到默认状态、它将继续运行、就像发生了阻止幻象断点返回的更改一样。 该程序非常复杂、我无法弄清楚该过程中发生了哪些变化来修复虚拟断点。 我记得、重新启动该计划后、他们又回来了。

    >您是否还可以尝试使用新的清理工作区文件夹来查看它是否有用?

    如果你还想我的话,我可以,但是我99%的人都相信它不会出现问题,因为当我重新创建似乎是导致它的表达式时,它就会被清除。

    Steve

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您进行如此详细的分析。 我尝试使用 EK-TM4C123GXL launchpad 和 CCS 10.0.0重现此问题、但未成功(重现此问题)。

    它必须是特定于您所使用的环境的东西。

    是否可以启用调试服务器日志记录并重现问题? 然后压缩日志并将其附加到此线程。

    https://software-dl.ti.com/ccs/esd/documents/ccs_diagnostic-logs.html

    谢谢  

    Ki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    > 是否可以启用 Debug Server Logging 并重现问题?  

    如果我能重现它、我会这样做。  到目前为止、由于删除并重新创建了似乎导致问题的表达式、它还没有回来。  我可能有备份或同事处理我可以从中获取日志的问题。

    Steve