Linux代码调试
一、检查内存泄漏
1.Valgrind
Valgrind
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析、检测线程错误的软件开发工具
原理:Valgrind 直接解释二进制代码使得应用程序基于它运行
Valgrind直接与现有可执行文件一起使用, 无需重新编译。若想看到对应行数,则在gcc/g++编译时 加上 ‘-g’
(1)ubuntu下安装
apt-get install valgrind
(2)代码实例调试
#include <stdio.h>
#include <stdlib.h>
void fun(void)
{
int *p = (int*)malloc(10*sizeof(int));
p[10] = 0; // 堆块溢出
}// 内存泄漏,x没释放
int main(int argc, char **argv)
{
fun() ;
return 0 ;
}
编译:
加 ‘-g’ 就能看到行数,不加也能跑,只是没有对应行数
#gcc -g test1.cc -o test1.out
运行:
#valgrind --leak-check=full ./test1.out
Memcheck 工具是默认设置,可以不用加tool直接使用