在 Linux下调试内存泄漏的方法

发表于:2011-6-02 10:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  (2)静态代码分析工具

  代码静态扫描和分析的工具比较多,比如 splint, PC-LINT, BEAM 等。因为 BEAM 支持的平台比较多,这以 BEAM 为例,做个简单介绍,其它有类似的处理过程。

  BEAM 可以检测四类问题: 没有初始化的变量;废弃的空指针;内存泄漏;冗余计算。而且支持的平台比较多。

  BEAM 支持以下平台:

  Linux x86 (glibc 2.2.4)

  Linux s390/s390x (glibc 2.3.3 or higher)

  Linux (PowerPC, USS) (glibc 2.3.2 or higher)

  AIX (4.3.2+)

  Window2000 以上

  清单2. 用作 Beam 分析的代码

#include   
#include   
#include   
int *p;  
void  
foo(int a)  
{  
int b, c;  
b = 0;  
if(!p)  
c = 1;  
if(c > a)  
c += p[1];  
}  
int LeakTest(char * Para)  
{  
char * Logmsg = new char[128];  
if((Para==NULL)||(Logmsg == NULL))  
return -1;  
sprintf(Logmsg,"LeakTest routine exit: '%s'.\n", Para);  
return 0;  
}  
int main(int argc,char **argv )  
{  
char szInit [] = "testcase1";  
LeakTest(szInit);  
return 0;  
}

  下面以 X86 Linux 为例,代码如清单 2,具体的环境如下:

  OS: Red Hat Enterprise Linux AS release 4 (Nahant Update 2)

  GCC: gcc version 3.4.4

  BEAM: 3.4.2; https://w3.eda.ibm.com/beam/

  可以把 BEAM 看作一个 C/C++ 编译器,按下面的命令进行编译 (前面两个命令是设置编译器环境变量):

./beam-3.4.2/bin/beam_configure --c gcc  
./beam-3.4.2/bin/beam_configure --cpp g++  
./beam-3.4.2/bin/beam_compile --beam::compiler=compiler_cpp_config.tcl -cpp code2.cpp

42/4<1234>
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号