
# 全局变量踩内存定位方法
调试过程中，发现一个全局变量只在一处赋值为0，但使用时打印发现变成一个非零异常值，大概率是该全局变量被踩。
如果已知一个全局变量被踩内存，可在Huawei_LiteOS/out/\<platform\>/.map文件中找到该全局变量所在的地址。注意该地址前面最近被使用的变量，排查是否前面变量操作不当引发踩内存，比如对该前面变量进行memcpy，memset操作时越界，溢出覆盖了当前全局变量。
这里列举一个测试的例子，在文件中定义了两全局变量，并且初始化。
```
UINT32 g_uwEraseMap[16] = {0};
UINT32 g_uwEraseCount = 0;
```
在.map文件中可以找到这些全局变量在bss段对应的位置。
![](https://support.huaweicloud.com/maintenance-LiteOS/zh-cn_image_0175230274.png "点击放大")
若g_uwEraseMap被踩，在.map文件中找到其地址，再查找该地址前面的变量，即g_uwEraseCount。特别注意分析g_uwEraseCount变量的使用情况，观察是否存在某处，对变量g_uwEraseCount进行了越界操作。
