c - 如何在 IAR Workbench 中用 C 调试堆栈溢出

标签 c debugging memory-leaks stack-overflow iar

我正在使用 IAR Embedded Workbench IDE 和 TI CC2540 蓝牙低功耗 8051 芯片进行 C 项目。

在处理该项目时,我似乎遇到了大量的 XData 堆栈和 Idata 堆栈溢出,我很难确定溢出的源头。我正在通过 UART 端口处理大量字符串。

我想知道是否有人对如何确保我在分配内存后释放内存有任何提示,并确保我保持在堆栈和堆的边界内。

谢谢

最佳答案

好吧,为了避免堆栈溢出,你应该避免以下事情:

1)递归(在嵌入式系统中使用递归不是一个好主意)

2)尽量避免动态分配。在大多数情况下,您不需要它。

在汽车行业,有几条 ECU 编程规则称为 MISRA 规则,建议不要使用动态分配的内存和递归。这是一个 link

IAR Embedded Workbench 是为数不多的支持 MISRA C 的 IDE 之一。尝试启用 MISRA C 选项(这可能表明您的问题出在哪里)。看看是怎么做到的here .

关于c - 如何在 IAR Workbench 中用 C 调试堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13243972/

相关文章:

c - 访问默认键盘设备

c - 以编程方式或来自 procfs 的 netstat 进程名称信息

c - strcmp 比较下注预定义和接收到的字符串

java - 在一次采访中有人问我如何检测 Java 中的内存泄漏?

c - 在 C 中连接字符串指针时如何避免内存泄漏

c - 如何按频率找到元素的完整排序?

c - 赋值从指针生成整数而不进行强制转换 [-Werror]

c++ - gdb:不在上下文中的结构的大小?

visual-studio-2010 - 在 Visual Studio 2010 上调试时 IIS 超时

javascript - 游戏循环内存泄漏