当前位置:网站首页>代码调试core-踩内存
代码调试core-踩内存
2022-07-06 19:03:00 【帅气滴点C】
定位方法:
- gdb:
- 通过gdb对内存打断点(watch) ,看看谁非法访问了该内存区域。然后逐步缩小范围。直到找到对应的函数段,比如:
- 比如发现0x800 地址被踩。
- 首先判断该地址是否合法,也就是0x800是否应该存在,如果不应该存在,则可以watch这个地址,也可以代码不断运行,期间不断打印该地址,看哪段代码修改了。
- 比如发现0x800 地址被踩。
- 局限
- 问题出现在启动阶段,来不及设断点,不好定位,
- 有些系统不支持gdb
- 被踩地址不固
- 通过gdb对内存打断点(watch) ,看看谁非法访问了该内存区域。然后逐步缩小范围。直到找到对应的函数段,比如:
- 类似内存泄漏的问题,先定界,后定位,通过内存proc信息(meminfo/media-mem)判断是具体的模块,内存段。也可以用MMU(linux下可以用mrotect)对特定区域进行保护
- 局限
- MMU保护的最小单位是一个内存页,有可能被踩区域较小,无法用mmu进行保护
- 局限
- 减法缩小范围,裁剪模块,修改应用程序,找到最小场景
- 加打印,打印出异常和怀疑的地址;也可以dump出被踩地址的数据,查看数据特征,根据数据特征分析从哪里来。
- valgrind+effence+ksan等工具
常见的问题
- 类型转换出错
- 比如小转大,包括常见的char和int,以及自定义结构体
- 包括形参
- 使用已经释放的地址
- 比如malloc或者没有申请控件就使用
- 申请的内存太小,不够用,类似与越界
如何避免
- 函数嵌套不要太深
- 代码要对称,malloc对应的位置一定要释放
- 数组大小要注意
边栏推荐
- 1个月增长900w+播放!总结B站顶流恰饭的2个新趋势
- Gee upgrade can realize one piece of run tasks
- S120驱动器基本调试步骤总结
- postgresql之整體查詢大致過程
- MATLB|具有储能的经济调度及机会约束和鲁棒优化
- Lombok同时使⽤@Data和@Builder 的坑
- 如何设计好接口测试用例?教你几个小技巧,轻松稿定
- 实施MES管理系统时,哪些管理点是需要注意的
- The cities research center of New York University recruits master of science and postdoctoral students
- 3--新唐nuc980 kernel支持jffs2, Jffs2文件系统制作, 内核挂载jffs2, uboot网口设置,uboot支持tftp
猜你喜欢
argo workflows源码解析
postgresql之整體查詢大致過程
6-6漏洞利用-SSH安全防御
C#/VB.NET 删除Word文档中的水印
阿里云易立:云原生如何破解企业降本提效难题?
[server data recovery] data recovery case of a Dell server crash caused by raid damage
AWS学习笔记(一)
如何设计好接口测试用例?教你几个小技巧,轻松稿定
Station B's June ranking list - feigua data up main growth ranking list (BiliBili platform) is released!
[unity notes] screen coordinates to ugui coordinates
随机推荐
Work of safety inspection
leetcode:5. 最长回文子串【dp + 抓着超时的尾巴】
1 -- Xintang nuc980 nuc980 porting uboot, starting from external mx25l
C#/VB. Net to delete watermarks in word documents
Pioneer of Web3: virtual human
Web3的先锋兵:虚拟人
Tips for web development: skillfully use ThreadLocal to avoid layer by layer value transmission
MySQL
数字滚动增加效果
安全巡检的工作
The panel floating with the mouse in unity can adapt to the size of text content
The boss is quarantined
The so-called consumer Internet only matches and connects industry information, and does not change the industry itself
postgresql 之 数据目录内部结构 简介
Lombok makes the pit of ⽤ @data and @builder at the same time
[C # notes] use file stream to copy files
3D laser slam: time synchronization of livox lidar hardware
1个月增长900w+播放!总结B站顶流恰饭的2个新趋势
普通测试年薪15w,测试开发年薪30w+,二者差距在哪?
[paper reading | deep reading] dngr:deep neural networks for learning graph representations