task状态判断是否踩内存
Shell命令task,可以查看当前系统所有任务的状态。命令输出的stackSize、WaterLine、StackPoint、Top0fStack信息,可以作为判断任务栈是否踩内存的指标。
这里举例说明如何通过task命令判断是否踩内存,如下图所示,有一任务名为shellTask。
StackSize = 0x3000(创建该任务时分配的栈大小)
WaterLine = 0x2810(水线,目前为止该任务栈已经被使用的内存大小)
StackPoint = 0x80d10084 (任务栈指针, 指向该任务当前的地址)
Top0fStack = 0x80d0d768(栈顶)
MaxStackPoint = Top0fStack + StackSize = 0x80d10768(得到该任务栈最大的可访问地址)
- 若WaterLine > StackSize,则说明该任务踩内存。
- 若StackPoint > MaxStackPoint 或 StackPoint < Top0fStack,则说明该任务踩内存。