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/TMS570LS3137:断点问题

Guru**** 2611705 points
Other Parts Discussed in Thread: TMS570LS3137

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/642103/ccs-tms570ls3137-break-point-issue

部件号:TMS570LS3137

工具/软件:Code Composer Studio

我们正在5.1   项目中使用TMS570ls3137微控制器和代码编辑器工作室(CCS版本:6.0 .1.0.004万 和ARM编译器版本TI v.1[TI 5.16 v.])。  我们在制定早餐时遇到了一些问题。

在少数情况下,我们不能在函数结尾处设置中断点。当我们尝试在调试模式下在函数结尾处(双击)设置中断点时,它将从   中断点管理器中填充一条消息,显示“No code associated with ..... line number in any loaded symbols”(没有与任何加载符号中的行号相关联的代码)。 但在反汇编窗口中,代码执行流按预期进行。  

 伪代码示例:

void函数(unsigned x)


   开关(x)
   {
    案例1:
     printf ("1");
    中断;

    案例2:
     printf ("2");
    中断;

    案例默认值:
     printf ("default");
    中断;

  }  

}

从上面 的伪代码中,如果x值为1,则它将执行CASE 1,程序控制将再次返回到"switch (x)"语句,随后对于单步操作,控制将返回到调用的函数。 因此我们无法在函数结束(函数结束大括号)处设置断点。

是否是CCS工具错误? 是否有解决此问题的方法?

请指导我解决此问题。

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

    在拆分视图中,有一个用于交错源代码行的选项。 如果打开此选项,您可以看到哪些C行具有与其关联的汇编代码。

    来自调试器的消息意味着没有与该C代码行关联的汇编指令。 如果C代码行只是函数末尾的一个},则可能没有可替换为断点指令的操作代码。

    所以基本上不是,这不是一个错误。 您会发现,在嵌入式系统上运行的调试代码与在主机上运行的脚本的调试不同。 您还可能会遇到优化程序开始执行其工作并重新排序指令,嵌入代码甚至完全删除不必要的代码的情况。

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

    您好,John:
    非常感谢您的回复。 正如您所说的,编译器不会为'C'端花括号(即‘})生成可执行代码,因此仍存在一些差异。 我们可以在函数结束时设置断点的大多数函数(即‘}'),但只有少数实例无法设置断点。
    这种行为直接影响我们的自动化测试。 我们正在使用LabVIEW进行自动化测试,它执行一些脚本以自动化调试过程。 它通过从".out.txt"文件获取函数的函数标识符,起始地址和结束地址,在函数结束处设置断点。
    示例:
    从“PROJ.out.txt”文件,
    "InitializeData","C:/temp/temp.c",0x0.6117万c,0x0.0061万fa8,83628
    根据上面的示例,脚本将断点位于0x0.0061万FA8。

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

    Subash,

    如果您添加一个仅设置标签的ASM()语句会怎样, 例如:

    您应确保能够在功能结束时设置BP。  或者,您甚至可以在标签上设置BP。

    John