全局变量被异常修改的原因
-
多线程操作未加锁
-
中断中修改
-
系统函数(strcpy, strcmp...)导致越界
-
栈溢出
-
数组/指针越界
-
被编译器优化
分析排查问题
-
多线程抢占,可通过加锁来验证是否为此原因导致
-
中断中修改,操作时可通过开关中断来进行临界保护,验证是否能解决
-
系统函数(strcpy, strcmp...)导致越界,将这些不安全的函数暂时屏蔽或者使用带限制的函数(strncpy, strncmp...)等替换进行验证是否解决
-
栈溢出,通过将栈空间增大或者将原来由栈分配的大数据改为全局数据,这样进行验证是否解决
-
数据/指针越界,这种时候需要查看map文件,查看被修改全局变量的附近是否有频繁修改的数据或者指针,尝试将附近的数据增大,查看是否解决问题
-
编译器优化,尝试增加volatile 修饰变量,验证是否解决