关注
以FreeRTOS为例。
有两种栈溢出检测办法。
第一种方法是在任务切换的时候检测栈指针是否越界(比较任务控制块TCB中的指向栈尾的指针和指向当前栈的指针),如果越界会触发栈溢出钩子函数vApplicationStackOverflowHook。这个方法速度比较快,但是不能检测所有栈溢出(比如任务执行过程中,在任务切换前发生了栈溢出,但在切换前又恢复正常,这无法检测)。
第二种方法在任务创建的时候将任务栈初始化为0XA5,任务切换的时候检查栈末尾16个字节是否为0xa5,假如不是,说明发生栈溢出 然后调用上面那个钩子函数。
通过宏taskCHECK_FOR_STACK_OVERFLOW 来选择方法1还是方法2。
配置为1则选择方法1,配置大于1则为方法2。
RT-Thread的检测貌似也是在任务发生调度切换的时候判断,方法主要是通过判断栈末尾是不是#来判断栈是不是溢出。
查看原帖
3 1
相关推荐
牛客热帖
更多
正在热议
更多
# 面试被问到不会的问题,你怎么应对? #
15962次浏览 335人参与
# uu们,春招你还来吗? #
56446次浏览 459人参与
# 厦门银行科技岗值不值得投 #
14845次浏览 351人参与
# 你见过哪些招聘隐形歧视? #
16010次浏览 145人参与
# 面试中,你被问过哪些奇葩问题? #
93340次浏览 1020人参与
# 你觉得大几开始实习最合适? #
19500次浏览 207人参与
# 招商银行数字金融训练营 #
105446次浏览 915人参与
# 25届网易互娱暑实进度 #
102557次浏览 784人参与
# 字节开奖 #
138851次浏览 625人参与
# 你都用vibe coding做过什么? #
13039次浏览 565人参与
# AI Coding实战技巧 #
9472次浏览 221人参与
# 做完笔试后你收到面试了吗? #
19119次浏览 196人参与
# 恒生电子笔试 #
19295次浏览 153人参与
# 哪个瞬间让你对大厂祛魅了? #
593004次浏览 3746人参与
# 你现在一天AI几次? #
7696次浏览 106人参与
# 找工作,你会甘心进小厂还是猛冲大厂 #
874634次浏览 7009人参与
# Vibe Coding 会干掉初级岗位吗? #
14985次浏览 186人参与
# 哪些公司在招寒假实习? #
89334次浏览 758人参与
# 大厂实习和小厂实习最大的区别是什么? #
32202次浏览 233人参与
# 如果人生可以debug你会改哪一行? #
6922次浏览 119人参与
# 面试吐槽bot #
185993次浏览 909人参与
# 牛友の3月总结 #
19538次浏览 173人参与
查看15道真题和解析