关注
以FreeRTOS为例。
有两种栈溢出检测办法。
第一种方法是在任务切换的时候检测栈指针是否越界(比较任务控制块TCB中的指向栈尾的指针和指向当前栈的指针),如果越界会触发栈溢出钩子函数vApplicationStackOverflowHook。这个方法速度比较快,但是不能检测所有栈溢出(比如任务执行过程中,在任务切换前发生了栈溢出,但在切换前又恢复正常,这无法检测)。
第二种方法在任务创建的时候将任务栈初始化为0XA5,任务切换的时候检查栈末尾16个字节是否为0xa5,假如不是,说明发生栈溢出 然后调用上面那个钩子函数。
通过宏taskCHECK_FOR_STACK_OVERFLOW 来选择方法1还是方法2。
配置为1则选择方法1,配置大于1则为方法2。
RT-Thread的检测貌似也是在任务发生调度切换的时候判断,方法主要是通过判断栈末尾是不是#来判断栈是不是溢出。
查看原帖
3 1
相关推荐
10-30 16:54
华南师范大学 C++ 点赞 评论 收藏
分享
牛客热帖
正在热议
# 25届秋招总结 #
338745次浏览 3225人参与
# 我的实习求职记录 #
6076697次浏览 83588人参与
# 百度开奖 #
190785次浏览 1215人参与
# 地方国企笔面经互助 #
4757次浏览 12人参与
# 运营商笔面经互助 #
91806次浏览 1328人参与
# 选完offer后,你后悔学本专业吗 #
22318次浏览 160人参与
# 北方华创开奖 #
38644次浏览 401人参与
# 职场吐槽大会 #
89641次浏览 736人参与
# 如果有时光机,你最想去到哪个年纪? #
23040次浏览 455人参与
# 如何一边实习一边秋招 #
998361次浏览 12679人参与
# 国企还是互联网,你怎么选? #
89607次浏览 697人参与
# 腾讯求职进展汇总 #
197671次浏览 1650人参与
# 银行笔面经互助 #
84134次浏览 887人参与
# 第一份工作应该选择高薪还是大平台 #
88638次浏览 589人参与
# bilibili求职进展汇总 #
33632次浏览 359人参与
# 风评不好的公司,你会去吗? #
20472次浏览 94人参与
# 许愿池 #
215180次浏览 2535人参与
# 上班苦还是上学苦呢? #
77009次浏览 713人参与
# 正在实习的你,几点下班 #
53744次浏览 397人参与
# 国央企薪资爆料 #
12827次浏览 94人参与
# 海康威视求职进展汇总 #
401429次浏览 3413人参与
# 学历or实习经历,哪个更重要 #
54514次浏览 428人参与