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:是否将局部变量添加到调试/表达式列表?

Guru**** 2587365 points
Other Parts Discussed in Thread: TMS320F28377D

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/608321/ccs-adding-local-variables-to-debug-expressions-list

主题中讨论的其他器件:TMS320F28377D

工具/软件:Code Composer Studio

如何将函数中的变量添加到 Debug / Expressions 列表中?

在表达式监视窗口中添加和删除全局变量没有问题。  将 全局变量的格式更改为表达式监视窗口没有问题。

我确实需要监控仅存在于函数中的局部变量。  我可以将它们设置为全局变量以用于调试、但这很耗时且容易出错。  如果函数位于头文件中该怎么办。

我看到一个变量观察窗口、但它似乎是无用的。

如果有任何帮助,将不胜感激。

我使用的 CCS 版本:6.2.0.00050。

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

    John、

    您使用的是什么器件?  您是否打开了优化器?

    一般来说、表达式视图和变量视图都应该能够显示局部变量(如果它们在范围内)。  如果启用优化器、则很有可能会优化它们。

    它是否起作用、或者只是不适用于某些变量?

    此致、

    John

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

    我将 TMS320F28377D Delfino DSC 与 XDS100v2 USB JTAG 仿真器结合使用。

    优化级别已关闭。

    我在 Code Composer Studio 工作了大约一年、但我还不知道很多。

    我不明白你的意思是"如果它们在范围内"。

    在函数外部声明的全局变量始终在表达式列表中工作。

    我从未在表达式或变量窗口中看到在函数内部声明的局部变量。

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

    John、

    在示波器中、I 意味着函数中变量在示波器中的程序计数器:

    我在 main()中,因此 i 和 j 和作用域中,但 c 不是:

    这里我在 John(),所以 c 和 count 在范围内,但 i 和 j 不在范围内:

    全局变量始终在范围内、因为它是在数据存储器中分配的。  局部变量位于栈上、仅在范围内可用。

    您是否可以共享一个显示您所看到问题的项目?  

    此致、

    John

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

    我已经阅读了 CCS 调试手册和 GSG:调试项目 v5、并且没有看到您描述的方法。  没有关于程序计数器的信息。

    当我在函数中放置断点时、我会看到不带名称或值的变量。 但我能够将局部变量添加到表达式列表中。

    当我暂停程序时、我无法访问这些函数

    在哪里可以找到有关放置程序计数器的更多信息?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    程序计数器或 PC 是包含 CPU 当前正在执行的地址的寄存器。
    whatis.techtarget.com/.../program-counter

    在调试 C 程序时、该地址通常映射到源文件中的一行。 CCS 将在编辑器的左侧显示一个箭头、标记即将执行的行。 即、从我的上一篇帖子开始、第一次捕获的 PC 位于第12行、第二次捕获的位于第6行。

    查看您的捕获、可以看到调用栈显示您在 F2837xD_usDelay.asm 文件内的某个位置停止。 在该位置停止时、您将无法看到任何本地 C 变量。

    如果在 Ethernet_test_V105.c 的第58行设置断点、然后重新加载程序并运行、会发生什么情况? 通常、当您启动调试器时、它是否会自动在 main 处停止?

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

    那么、我必须设置断点并停止程序以查看局部变量吗?

    是的,我经常使用"delay_US();",如果我暂停程序,它通常会在那里停止。

    当我启动程序时、它会自动在 main 暂停、如下所示。 但是变量列表不显示名称或值,只显示(x)

    我上一个帖子中的第一张图片显示了在我的函数"Read_Data"中放置断点时的变量列表。  当我这么做时、我可以将局部变量添加到表达式列表中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当您在该行时、您是否能够将 I 添加到表达式视图中?

    如果不是、如果您多走几行(即第58行)、它是否起作用?

    请注意、我从未在您的代码中进行初始化、因此 STEP 将具有随机值。 它是否会在代码中使用? 尝试将行更改为 int i =0;



    "因此、我必须设置断点并停止程序以查看局部变量?"

    您需要在变量处于范围内的点暂停。 否则、您将无法看到它们。 因此、您可以在函数中设置一个要检查变量的断点、也可以单步进入该断点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我可以将 I 添加到表达式视图中

    好的、我现在了解如何查看局部变量。 我真的想在程序运行时进行监视、但我认为这是不可能的。

    我不理解"Variables"视图为什么不显示名称或值、但我想如果可以添加到"Expressions"视图、则不需要。

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

    我能够使我的变量视图看起来像您的变量视图。

    请尝试以下操作以修复变量视图。

    单击菜单栏上的向下箭头

    单击  

    布局->显示列

    这将重新添加列

    此致、

    John

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

    再次感谢。