这到底是什么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所有 ...
随机推荐
- suricata 命令行解释【转】
suricata命令行 转载地址:http://blog.sina.com.cn/s/blog_6f8edcde0101gcha.html suricata命令行选项说明 你能两种方式使用命令行选项, ...
- 深度优化LNMP之PHP
PHP缓存加速介绍 1.操作码介绍及缓存原理 当客户端请求一个php程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码文件(Operate Code,opcode)该文 ...
- Docker(二):Dockerfile使用介绍
上一篇文章Docker(一):Docker入门教程介绍了 Docker 基本概念,其中镜像.容器和 Dockerfile .我们使用 Dockerfile 定义镜像,依赖镜像来运行容器,因此 Dock ...
- 基于js利用经纬度进行两地的距离计算(转)
转自:http://www.storyday.com/html/y2009/2212_according-to-latitude-and-longitude-distance-calculation- ...
- ASP.NET MVC 向浏览器发送文件以提供文件下载功能
撑到大三了,结果发现周围的同学更加堕落了,尤其是某些人,表面上看起来很认真,实际上三天打鱼,两天晒网,结果一事无成,却还要抱怨学校教育失败. 为了吸取他们的教训,就算是一个小小的编码问题,我也要努力解 ...
- 【Redis源代码剖析】 - Redis内置数据结构之字典dict
原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/51018337 今天我们来讲讲Redis中的哈希表. 哈希表在C++中相应的是ma ...
- Java 8 Streams filter examples
1. Streams filter() and collect() package com.mkyong.java8; import java.util.Arrays;import java.util ...
- extjs4学习-01-准备工作
想学习这个,在这里做个笔记. 创建了svn管理,路径http://ip:端口/repos/doc_jnfwz/liuzhenming/extjs4/extjs4 eclipse 中安装插件,支持在js ...
- unfolding maps支持中文
由于项目需要,选择了processing+unfolding的方式进行数据可是话的开发,unfolding maps是一个非常强大的地图工具,processing可以灵活自如的表达各种图形/效果.使用 ...
- Xtrabackup备份、还原、恢复Mysql操作大全
环境:CentOS 6.7 + Mysql 5.7.19 + Xtraback 2.4.8 innobackupex常用参数: --user=USER 指定备份用户,不指定的话为当前系统用户 --p ...