DS5解决 内存踩踏
最近发现个问题:malloc出来的几组值(UINT32)总是发生变化,总有地方改他。
硬件平台:zynq 7045。软件平台 ucos II操作系统。
这种问题定位起来非常费劲,有可能数组越界,有可能野指针等等。
不过运气不错,我找到了神器:DS5。
1.DS5的使用
硬件连接就不用说了,软件开始。
1.1 建立工程。
将代码考入到ds5 目录下 workspace
File----->Import
选择Existing Projects into Workspace,选择next,
我这已经添加了,所以不能重新添加,添加完成后选择finish即可。
1.2 debug信息。
run--->Debug Configurtations
右键DS-5 Debugger 选择new。
connection目录下 选择对应的平台。我是zynq 然后选择裸机(下面有linux)。
file选择编译好的elf格式文件:
Debugger选择connect only
os awareness选择对应的裸机操作系统
然后选择debug即可。
1.3 开始debug
分别对应 run,停止 单步调试等信息。
0x60b284为踩踏的地址:增加watch point
watch point 监测0x60b284 == 3的时候,抓住现场。然后通过mw(改内存指令),把此地址值改成3,可以抓住mw所在线程。图如下:
此时cpu stop,然后在再更改watch ponit监测 0x60b284不为3条件时抓现场。
最后发现PC指针指向了 0x10ADB8.把elf格式的文件进行反汇编arm-linux-gcc-objdump - D xxxx.elf > xxxx.txt,
打开xxx.txt,查找0x10ADB8地址或者附近地址的函数:
可以看到正好处于这个函数,进行压栈时候出错了:
为了证实,可以查看ds-5中的cpu的 r0-r4寄存器:
正好一样,证实了错误的存在。不得不说DS-5真是款神器:
这样就可以看出了内存分布图出现错误,irq模式下的栈设置到了malloc区域了。
DS5解决 内存踩踏相关推荐
- 记free 多次引发的内存踩踏事件
free()是C语言中释放内存的主流函数.他的实质是修改一块内存的标记为"空闲",仅此而已.既不会清零内存也不会对内存链表做修改,仅仅是修改标记. free的原型是: void f ...
- free导致的内存踩踏例子
free()是C语言中释放内存的主流函数.他的实质是修改一块内存的标记为"空闲",仅此而已.既不会清零内存也不会对内存链表做修改,仅仅是修改标记. free的原型是: void f ...
- 内存踩踏/memcopy
内存踩踏主要发生在 c语言库函数 memcpy 中,而 memmove有相应机制. memcpy void *memcpy(void *dest, const void *src, size_t n) ...
- 一周技术思考(第36期)-缓存踩踏与惊群效应
图自网络 "10年前的那一天Facebook发生了什么",本想用这个题目,但不符合本系列的气质,那,那天到底发生了什么呢. Facebook的事故介绍 2010年9月23日,Fac ...
- 加油站踩踏式逃亡?电网成大赢家?时代抛弃你的时候,真的一声不吭
电力网按: 时代抛弃你的时候,真的一声不吭!新能源汽车的渗透率远超想象,在电子游戏.移动互联网.短视频时代成长起来的Z世代,没有接受过燃油车时代的恩惠,对电动车天然接受程度高,这部分人群即将或者已经成 ...
- 从奥运门票系统瘫痪到家乐福踩踏事件看软件设计中业务模型的处理
从奥运门票系统瘫痪到家乐福踩踏事件看软件设计中业务模型的处理 作者:郭方明 完成日期:2007-11-17 version 1.0 联系信箱:gfm.job@Gmail.com 注:转载文章,请注明作 ...
- Tomcat参数设置,解决内存溢出问题
Tomcat参数设置,解决内存溢出问题 参考文章: (1)Tomcat参数设置,解决内存溢出问题 (2)https://www.cnblogs.com/fan-yuan/p/7213950.html ...
- [USACO15JAN]踩踏Stampede
[USACO15JAN]踩踏Stampede 题目描述 DJ站在原点上向y轴正半轴看,然后有一群奶牛从他眼前飞过.这些奶牛初始都在第二象限,尾巴在(Xi,Yi),头在(Xi+1,Yi),每Ci秒向右走 ...
- 解决内存不可read和written的问题
内存不能为read和written的问题是一个非常复杂的问题,造成的原因是多方面的,有硬件的原因,也有软件的原因,一时半会儿很难搞的清楚.就是对那些整天玩电脑的老手来说也是一个非常辣手的问题,所以我一 ...
最新文章
- grpc通信原理_容器原理架构详解(全)
- OpenMP的一点使用经验
- 如何解包/编辑/打包boot.img文件
- python 垃圾回收
- 玩Docker只要浏览器就够了,PWD是个神奇的网站
- transform的q、k、v的计算过程
- soap rest_REST是新的SOAP
- 黑龙江省:到2025年将建成5G基站11.4万个
- 【es】ElasticSearch 插件开发
- Finding all unique triplets that sums to zero[部分转载]
- 微软lync 持续服务器,Lync Server 2013 Front-End服务器服务不会启动很长时间
- java读xml文件一般用什么_java读xml文件
- 2018-2019-1 20165323《信息安全系统设计基础》第一周学习总结
- Linux中级之netfilter/iptables应用及补充
- HDU 6191 2017广西邀请赛Query on A Tree:可持久化01字典树(区间抑或最大值查询)
- EXCEL去掉所有英文
- linux chrome 缓存,Linux设置chrome缓存至内存,及开关机同步
- 【转】深度技术分析“为什么ios比android流畅”
- 巴比特 | 元宇宙每日必读:42.46%的人年薪超过20万,元宇宙人才没有想象中的金贵?...
- h2os android版本,h2os属于安卓系统吗
热门文章
- 计算机网络研究进展,高性能计算机网络研究进展-人文社科教育.pdf
- 真无线耳机哪个牌子好?蓝牙耳机十大品牌排行榜!
- book类 借书 java_java学习之借书系统
- 芯片行业BSP驱动开发1年总结
- IDEA如何设置启动参数,环境变量
- 54、基于51单片机饮水机温度水位控制无线蓝牙APP控制报警系统设计(程序+原理图+PCB源文件+Proteus仿真+参考论文+开题报告+元器件清单等)
- 大型网站技术架构核心原理与案例分析学习笔记(理论篇)
- 你最想了解的lammps相关知识
- JTAG管脚定义及详细说明(转)
- 工具推荐-使用RedisInsight工具对Redis集群CURD操作及数据可视化和性能监控