[Debug]内存问题的一些调试方法
2014-03-08 14:16
183 查看
1,使用valgrind工具
valgrind使用介绍
valgrind官网
如果要使用图形化的界面,要安装QT,工具名字是valkyrie
通过top命令,/proc/meminfo看总内存,看每个进程使用的内存
在 Linux 平台可以用 ps 命令,来监视内存的使用,比如下面的命令 (观测指定进程的VSZ值):ps -aux VSZ 该进程使用掉的虚拟内存量(KB)
ps命令:点击打开链接
C++内存泄露调试方法~
常见内存错误的类型
代码段,是只读数据,如果试图对这一区域进行写,那么会发生内存错误
数据段/BSS段:未初始化直接访问,即使没有初始化,任然会初始化为0
栈空间数据:
局部变量,未初始化的时候值是随机的。
栈溢出:在栈中申请过大的局部变量
堆空间数据:
内存泄露:(1)申请为释放 (2)申请后双重释放
对于所有的地址空间
(1)野指针,去访问未初始化指针所指向的数据
(2)对数据等越界访问
(3)非法越权访问,如试图对mmap()的只读空间去写
(4)去访问不在控制范围内的地址空间
2,Linux 内核内存检测工具
http://www.ibm.com/developerworks/cn/linux/l-cn-kmemcheck/
valgrind使用介绍
valgrind官网
如果要使用图形化的界面,要安装QT,工具名字是valkyrie
通过top命令,/proc/meminfo看总内存,看每个进程使用的内存
在 Linux 平台可以用 ps 命令,来监视内存的使用,比如下面的命令 (观测指定进程的VSZ值):ps -aux VSZ 该进程使用掉的虚拟内存量(KB)
ps命令:点击打开链接
C++内存泄露调试方法~
常见内存错误的类型
代码段,是只读数据,如果试图对这一区域进行写,那么会发生内存错误
数据段/BSS段:未初始化直接访问,即使没有初始化,任然会初始化为0
栈空间数据:
局部变量,未初始化的时候值是随机的。
栈溢出:在栈中申请过大的局部变量
堆空间数据:
内存泄露:(1)申请为释放 (2)申请后双重释放
对于所有的地址空间
(1)野指针,去访问未初始化指针所指向的数据
(2)对数据等越界访问
(3)非法越权访问,如试图对mmap()的只读空间去写
(4)去访问不在控制范围内的地址空间
2,Linux 内核内存检测工具
http://www.ibm.com/developerworks/cn/linux/l-cn-kmemcheck/
相关文章推荐
- [Debug]内存问题的一些调试方法
- 解决Win8在DOS中使用debug调试汇编问题的方法
- 内存问题的调试方法
- MatLab GUI Use Command for Debug 界面调试的一些方法
- 关于Resin在Eclipse或者Myeclipse上利用Debug模式部署的方法以及遇到的一些问题
- 有关Android Debug source not found问题的一些解决方法:
- 程序内存或CPU异常增长问题的一个调试分析方法
- 内核中自带的内存调试方法CONFIG_DEBUG_SLAB
- 内核中自带的内存调试方法CONFIG_DEBUG_SLAB
- 近几天 用微芯力科的板子 调试usb虚拟串口的程序,发现一些问题以及解决方法。和大家共享
- linux android memory相关问题的一些debug方法
- c++ 导致内存泄露的一些小问题与解决方法
- VC程序调试技术,一些工具上和具体的问题,包括内存检测
- 用Qt开发游戏时一些问题的解决方法(一)
- C++解决大数组栈内存不够问题的方法分析
- Keil IAR - Cortex M3 调试问题及解决方法(1)
- ubuntu下配置opencv2.4.10 步骤以及一些所遇问题解决方法
- 在向数据库中插入客户端IP调试时遇到的一些问题
- 修复VS2005(Visual Studio2005)调试自动关闭问题[成功方法!]
- 多线程程序退出内存句柄泄漏的问题以及解决方法