关注
 以FreeRTOS为例。
有两种栈溢出检测办法。
第一种方法是在任务切换的时候检测栈指针是否越界(比较任务控制块TCB中的指向栈尾的指针和指向当前栈的指针),如果越界会触发栈溢出钩子函数vApplicationStackOverflowHook。这个方法速度比较快,但是不能检测所有栈溢出(比如任务执行过程中,在任务切换前发生了栈溢出,但在切换前又恢复正常,这无法检测)。
第二种方法在任务创建的时候将任务栈初始化为0XA5,任务切换的时候检查栈末尾16个字节是否为0xa5,假如不是,说明发生栈溢出 然后调用上面那个钩子函数。
通过宏taskCHECK_FOR_STACK_OVERFLOW 来选择方法1还是方法2。
配置为1则选择方法1,配置大于1则为方法2。
RT-Thread的检测貌似也是在任务发生调度切换的时候判断,方法主要是通过判断栈末尾是不是#来判断栈是不是溢出。
  查看原帖
  3  1
相关推荐
 点赞 评论 收藏   
分享
 昨天 13:11
  大连理工大学 游戏后端  后端转测开第一人:再怎么劝退也没用的 某些群体总以为在一个幸存者偏差的软件上看见了极少数秋招上岸某个大厂的个例就幻想上了 事实上自己打开ssob沟通1000+连个小厂面试都没
 点赞 评论 收藏   
分享
 牛客热帖
更多 
 正在热议
 更多 
 # 秋招开始捡漏了吗 #
 17319次浏览 106人参与
# 找工作八股要背到什么程度? #
 1496次浏览 37人参与
# “vivo”个offer #
 47355次浏览 312人参与
# 上班后,才发现大学__白学了 #
 3083次浏览 22人参与
# 辞职后的日常 #
 15953次浏览 84人参与
# 用一句话形容你的团队氛围 #
 1344次浏览 35人参与
# 你实习是赚钱了还是亏钱了? #
 1802次浏览 22人参与
# 一人一个landing小技巧 #
 127928次浏览 1463人参与
# 打工人的精神状态 #
 101664次浏览 1314人参与
# 满帮集团求职进展汇总 #
 8364次浏览 71人参与
# 规定下班时间vs实际下班时间 #
 56195次浏览 332人参与
# 你找工作是从容有余 or 匆忙滚爬? #
 1139次浏览 24人参与
# 上班到公司第一件事做什么? #
 99137次浏览 681人参与
# 分享一个让你热爱工作的瞬间 #
 43736次浏览 395人参与
# 今年秋招还有金九银十吗 #
 19002次浏览 161人参与
# 我和mentor的爱恨情仇 #
 79657次浏览 434人参与
# 数字马力求职进展汇总 #
 212694次浏览 1680人参与
# 你见过哪些工贼行为 #
 32620次浏览 151人参与
# 被同事甩锅了怎么办 #
 25553次浏览 100人参与
# 我想去国央企的原因 #
 68726次浏览 413人参与
# 华为保温 #
 113822次浏览 442人参与