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.

[参考译文] 编译器/CC3220SF-LAUNCHXL:堆溢出

Guru**** 2587345 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/914069/compiler-cc3220sf-launchxl-heap-overflow

器件型号:CC3220SF-LAUNCHXL

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

我在这方面花费了很多时间、在此阶段需要一些帮助。 在 ROV 中,在 HeapTrasck->HeapAllocList->Overflow 下,我有时会看到它闪烁为 true 和 red。 我更仔细地研究了这一点、因为我有一些堆管理豁免。 我非常仔细地查看了我的代码、尝试缩小代码范围并可靠地复制它、这是我无法做到的。 基本上、我给几个休息电话打了个电话、然后会闪烁红色、然后再返回黄色。 即使执行完全相同的操作、也是不一致的。 到目前为止、我已经在 堆中添加了一个 GateMutexPri、这没什么区别。 我没有任何内存泄漏、因为 totalFreeSize 始终会返回到相同的位置。 我还在使用 Hwi->exeption (发生崩溃时的侦听)并查看 PC 寄存器等、但这并不能帮助指出代码中的分配是什么问题。

-ROV HeapMem 和 HeapTrack 中的磁场闪烁为红色的确切含义是什么?

-当任何字段变为红色时,我可以暂停代码。

-“时钟周期”字段是什么意思?

非常感谢您的任何帮助。

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

    Michael、

    尝试使用 TI-RTOS 的调试版本进行编译、在崩溃时、应该会获得有关发生的事件和发生位置的更多信息。 发生这种情况时、请提供打印的命令窗口。

    您将在我们的 SDK 中找到 TI-RTOS 内部版本的调试版本。

    BR、

    Vince  

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

    感谢 Vince、我们将深入探讨。 希望获得有关 ROV 红色状态的答案。 有人吗?

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

    您好、Michael、

    上面显示的红色"是"表示一个已分配的内存块的末尾已经被覆盖。 例如、如果您分配了一个8字节的块并在其中执行了一个10字节的 memset。

     https://training.ti.com/debugging-common-application-issues-ti-rtos 的最后三分之一 提供了有关 HeapTrack 的更多详细信息。

    注意:闪烁可能是因为您可能已使用覆盖功能释放了分配的块。 释放后、它将不会显示在 ROV 中。

    Todd