这到底是什么bug?---已结贴
问题描述:全局变量,会被莫名其妙更改!打印为50,后面做比较的时候这个值为0了。
第一,我肯定没有犯低级错误,没有其他的更改,搜索全部代码,没有发现这个变量因为我程序问题导致不符合预期,同时找了两位同事检验;第二,volatile肯定是修饰了变量的。
同时在网上搜索了一下,并没有得到满意的答复,但是可以确定的是,在使用keil 对STM32编程的时候,有其他人和我出现了一样的问题。
在国外和国内看到了符合我情况描述,可是最后的原因,我实在不知,也没得到一个满意的答案。
一份程序各个变量跑得好好的,因为增加了代码,然后出现了变量的未知更改。
很荒谬的是,有人说再增加一点代码,它就又能正常跑了。但我确实是这样做了之后,它还真就好了,增加的代码和这个变量无关。
再其次,在使用结构体强制一字节对齐之后,也出现过结构体中的数据不对,之后调整了结构体元素的位置,解决了这个问题,但是我强制一字节对齐,按理说不应该有问题,程序也正常运行了很久,后面增加了代码之后出现了这个问题。依旧迷惑。
我无法理解和解释这个现象。
只能说,之后的强制一字节对齐还是慎用,还有就是遇到C语言语法没有错误的时候,多想想其他办法,看能不能绕过这个问题,先满足目前的需求,当然,我们最后都想知道根本原因,可由于知识的限制。。。
玩ARM的想着单片机的好,玩单片机的时候想着要是arm我就自己完成重定位了。
在学校的时候想着上班,上班了想着学校的好。
对我的这个问题,提出我自己的假设:最可能的还是内存问题,其次操作系统任务切换的问题。希望有一天自己能够明白。
最后说一句,做单片机没有那么简单,做单片机也可以有比较不错的工资,可做单片机,真的没有前途,之后或许不会怎么玩这个了,我还是有追求的!
结题:
还是内存溢出导致的,任务栈倒是够得,只是我的串口缓存数组设置过小(这种情况下偶尔是能正常的,当运行到程序的某个地方的可能出现bug,必然我们要规避掉这种情况),扩大一倍后程序一直运行无该类现象产生了。总结就是,遇到这类问题,多半是数组溢出或者指针乱访问或者系统栈不够或者任务栈不够用。这类问题还可能会导致STM32进入硬件错误中断。以后多留意该类问题。
/*2018.7.15*/
这到底是什么bug?---已结贴的更多相关文章
- (BUG已修改,最优化)安卓ListView异步加载网络图片与缓存软引用图片,线程池,只加载当前屏之说明
原文:http://blog.csdn.net/java_jh/article/details/20068915 迟点出更新的.这个还有BUG.因为软引应不给力了.2.3之后 前几天的原文有一个线程管 ...
- python 之金玉良言 或许是最后一次给自己系统总结--已结
jar tvf xxx.jar vim xxx.jar 配置一下 notepad++ F5 cmd /k D:"Program Files (x86)"\python\python ...
- python 黑魔法收集--已结
awesome python 中文大全 Fabric , pip, virtualenv 内建函数好文 awesome python 奇技淫巧 一句话求阶乘 from functools import ...
- python 精华梳理(已理解并手写)--全是干货--已结
基础部分 map,reduce,filter,sort,推导式,匿名函数lambda , 协程,异步io,上下文管理 自定义字符串转数字方法一不使用reduce import re def str2i ...
- python 基础部分重点复习整理--从意识那天开始进阶--已结
pythonic 风格编码 入门python好博客 进阶大纲 有趣的灵魂 老齐的教程 老齐还整理了很多精华 听说 fluent python + pro python 这两本书还不错! 元组三种遍历, ...
- spring boot 文件上传工具类(bug 已修改)
以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...
- 迅雷最新bug已被找到!mac不用登录也可以极速下载了!
想体验迅雷不限速的快感吗?下载这款迅雷Mac(不限速免vip)免登录版吧!拥有了这款迅雷Mac破解版,电影.游戏等所有大文件都不在话下.体验极速的下载功能,尽在迅雷Mac(不限速免vip)破解版!需要 ...
- 软件测试中Bug的生命周期以及Bug的严重等级
软件测试中Bug的生命周期以及Bug的严重等级 我猜你们都会,但能说专业且全面不? 1.首先当测试人员接到一个项目或产品准备测试的时候,测试人员会根据测试用例一步步的来执行用例进行简单的功能测试.当测 ...
- 第三周作业3——Bug Report
作业要求来自:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/957 要求1: 准备工作:利用老师提供的git 命令,批量pull所有 ...
随机推荐
- ios面试题来一波
一.如果让你实现属性的weak,如何实现的? PS: @property 等同于在.h文件中声明实例变量的get/set方法, 而其中property有一些关键字,其中就包括weak,atomic的. ...
- session的取代者:Json Web Tokens----在客户端存储登陆状态
https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/
- 使用GDI+进行图片处理时要注意的问题
原文链接: http://blog.csdn.net/chenlycly/article/details/24112955 与GDI相比,GDI+要强大很多.对于Windows应用程序来说,用GDI是 ...
- Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应
杂家前文Android颜色对照表只有颜色和十六进制,有时候需要设置r g b分量的int值,如paint.setARGB(255, 127, 255, 212);就需要自己计算下分量的各个值.这里提供 ...
- Django form入门详解--1
form在django中的作用: 1.可以用于自动生成form的html 2.数据校验 3.与model一在一起使用.可以大的方便数据驱动型网站的开发 编程中有许多的东西是“不可描述”的.只有动手去 ...
- Linux vi/vim替换命令的使用说明[转]
vi/vim 中可以使用 :s 命令来替换字符串.:s/vivian/sky/ 替换当前行第一个 vivian 为 sky:s/vivian/sky/g 替换当前行所有 vivian 为 sky:n, ...
- 用Power BI观察经济与健康的关系
Hans Rosling是卡罗琳学院的国际卫生学教授.这位学者与众不同的技能是数据可视化.以直观的数据展现了令人信服的世界观,而且在gapminder.org提供无偿展示以及下载.假设你没有看过下面的 ...
- MSSQL分组取后每一组的最新一条记录
数据库中二张表,用户表和奖金记录表,奖金记录表中一个用户有多条信息,有一个生效时间,现在要查询: 奖金生效时间在三天前,每个用户取最新一条奖金记录,且用户末锁定 以前用的方法是直接写在C#代码中的: ...
- [100]tar命令打包(排除目录或文件)
在linux中可以用tar打包目录以方便传输or备份,我们先来看一个例子 Linux下tar命令exclude选项排除指定文件或目录 test 文件夹有如下文件 [root@lee ~]# ll te ...
- LeetCode——4Sum & 总结
LeetCode--4Sum & 总结 前言 有人对 Leetcode 上 2Sum,3Sum,4Sum,K Sum问题作了总结: http://blog.csdn.net/nanjunxia ...