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.

[参考译文] 编译器/CC-调试器:<错误读取变量:在使用GDB &amp的MSP430fr5969上调试时,dwarf stack&gt上的类型不兼容;gdb_agent_console

Guru**** 2020320 points
Other Parts Discussed in Thread: MSP430FR5969, MSP430FR6989
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/641923/compiler-cc-debugger-error-reading-variable-incompatible-types-on-dwarf-stack-while-debugging-on-msp430fr5969-with-gdb-gdb_agent_console

部件号:CC-调试器
主题中讨论的其他部件:MSP430FR5969MSP430FR6989

工具/软件:TI C/C++编译器

我正在尝试使用GDB和gdb_agent_console在msp430fr5969上调试一个简单的ledblink代码。 我曾经遇到在main()设置的断点,但打印范围中变量的内容会在 dwarf堆栈 错误中提供不兼容的类型。  由于这个问题,我无法跟踪变量内容的更改。

如何访问变量?

谢谢

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

    不幸的是,这是一个非常模糊的错误。 我只能在GDB源文件中找到它,并且调试信息(Dwarf)与其实际类型之间似乎存在差异。 我无法确定这是否是构建可执行文件时产生的问题,但这是我的最佳选择。 很遗憾,除了一些提示之外,我无法提供更多信息来进一步了解问题。

    是否可以使用其他变量(全局变量或本地变量)重试此操作? 如果您使用“info变量”,“info本地”或“info参数”,是否会看到任何错误? 如果您看不到其他变量的此问题,请比较它们在内存中的位置(上/下FRAM),它们的大小(如果大于或小于设备的数据路径大小(16位))或检查是否应用了优化。

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

    您好,Rafael:

    感谢您提供信息。 我决定在main函数上方添加一个全局变量(count)。 在调试过程中,我能够访问全局变量的内容,但在main()函数中声明的其他局部变量仍返回 dwarf栈 错误上的不兼容类型。


    我还确保将优化级别保持在O0, 您认为堆栈上的局部变量与堆(全局)上的局部变量不可访问的原因是什么?

    谢谢你

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

    您好,

    感谢您发送附加信息。 此时,我将尝试最后两个提示。  

    1. 根据GCC文档,-O0应该已禁用优化器,但仍然“减少编译时间并使调试产生预期结果。 这是默认值。 "

    同一文档还提到选项-og,该选项"优化调试体验。 -og启用不干扰调试的优化。 它应该是标准编辑-编译-调试周期的优化级别选择,提供合理的优化级别,同时保持快速编译和良好的调试体验。”

    然后,我将明确尝试此选项,以绝对确保您涵盖了有关任何可能的优化器影响的所有基础。

    2.我将尝试使用-gdwarf-2, -gdwarf-3或 -gdwarf-4更改dwarf格式版本,以查看它是否影响结果。 《 MSP430GCC用户指南》的表9中对此进行了说明

    不幸的是,我的想法已经不多了,没有GDB本身的漏洞,但请尝试一下这些建议,好吗? 如果我发现任何其他可能对您有帮助的信息,我将向您报告此主题。  

    希望这能有所帮助,

    拉斐尔

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

    感谢你的帮助。 我已经尝试了您建议的所有技巧。

    在克莱姆森大学的Jacob Sorber教授进行了几次故障排除后,我们发现该错误是由于将-mllarge选项“允许使用大模型寻址”传递给MSP430 GCC而导致的。

    快速解决方法是在编译时消除-mlarge选项。 但是,这并不能解决问题,尤其是在需要大模型寻址时。 我在MSP430FR5969和MSP430FR6989微控制器上测试了此方案。

    如果TI能够尽快解决此问题,那将是非常好的。

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

    Simeon Babatunde 说:
    如果TI能尽快解决此问题,那将是非常好的。[/QUOT]

    为此,我向 社会发展和工作方案系统提交了公共卫生和社会福利部第六号文件,要求对这一问题进行调查。  欢迎您使用我签名中下面的SDOWP链接进行关注。   

    设置您对何时可以解决此问题的期望... MSP430 GCC工具的最新下载页面显示:

    Somnium不再为TI提供mspgcc版本。 这将是6.x分支的最终mspgcc版本。 TI正在研究各种选项。

    因此,我不能说何时可以解决这个问题。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您提供信息,也感谢您提交错误。 我将继续跟踪问题,直到问题得到解决。