当前位置:网站首页>代码调试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对应的位置一定要释放
- 数组大小要注意
边栏推荐
- postgresql 之 数据目录内部结构 简介
- Data connection mode in low code platform (Part 1)
- Lidar: introduction and usage of ouster OS
- 本周 火火火火 的开源项目!
- postgresql之整體查詢大致過程
- 【森城市】GIS数据漫谈(二)
- 慧通编程入门课程 - 2A闯关
- unity 自定义webgl打包模板
- 差异与阵列和阵列结构和链表的区别
- 3 -- Xintang nuc980 kernel supports JFFS2, JFFS2 file system production, kernel mount JFFS2, uboot network port settings, and uboot supports TFTP
猜你喜欢

FLIR blackfly s usb3 industrial camera: how to use counters and timers

用全连接+softmax对图片的feature进行分类

Draco - glTF模型压缩利器

Web3的先锋兵:虚拟人

Infrared camera: juge infrared mag32 product introduction

【论文阅读|深读】 GraphSAGE:Inductive Representation Learning on Large Graphs

Station B's June ranking list - feigua data up main growth ranking list (BiliBili platform) is released!

KYSL 海康摄像头 8247 h9 isapi测试

The panel floating with the mouse in unity can adapt to the size of text content

测试优惠券要怎么写测试用例?
随机推荐
leetcode:736. Lisp 语法解析【花里胡哨 + 栈 + 状态enumaotu + slots】
Why am I warned that the 'CMAKE_ TOOLCHAIN_ FILE' variable is not used by the project?
How to build a 32core raspberry pie cluster from 0 to 1
用全连接+softmax对图片的feature进行分类
STM32 project -- Topic sharing (part)
牛客编程题--必刷101之双指针篇
Introduction to the internal structure of the data directory of PostgreSQL
Application analysis of face recognition
CSDN summer camp course project analysis
4 -- Xintang nuc980 mount initramfs NFS file system
Apifox, is your API interface document rolled up like this?
数论 --- 快速幂、快速幂求逆元
MetaForce原力元宇宙佛萨奇2.0智能合约系统开发(源码部署)
企业中台建设新路径——低代码平台
3D laser slam: time synchronization of livox lidar hardware
fiddler的使用
真实项目,用微信小程序开门编码实现(完结)
[server data recovery] data recovery case of a Dell server crash caused by raid damage
[paper reading | deep reading] graphsage:inductive representation learning on large graphs
哈希表及完整注释