免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6546 | 回复: 8
打印 上一主题 下一主题

[C++] AIX下安装 valgrind问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-20 11:24 |只看该作者 |倒序浏览
这两天在AIX上试着装valgrind-3.3.1,在linux下能装能用。就在AIX下遇到挺多问题
在make 编译过程遇到:
     
ld: 0711-317 ERROR: Undefined symbol: encrypted_pw_passlen
ld: 0711-317 ERROR: Undefined symbol: crypt_r
ld: 0711-317 ERROR: Undefined symbol: max_history_size
ld: 0711-317 ERROR: Undefined symbol: getpass_auto
ld: 0711-317 ERROR: Undefined symbol: max_pw_passlen     

于是我创建一个名为StaticLinkScript的符号表文件,输入:
#!
encrypted_pw_passlen
crypt_r
max_history_size
getpass_auto
max_pw_passlen
编译就能通过了。

但是我在执行程序的时候确报错了:
yb_p690#valgrind
valgrind: can't stat /usr/local/lib/valgrind/ppc64-aix5/memcheck

请问各位这个问题怎么解决?

论坛徽章:
0
2 [报告]
发表于 2010-01-20 12:39 |只看该作者
aix下估计没装crypt相关的库

论坛徽章:
0
3 [报告]
发表于 2010-01-21 08:57 |只看该作者
请问crypt这个库有相关的包可以提供下载吗

论坛徽章:
0
4 [报告]
发表于 2010-01-25 16:15 |只看该作者
env LDFLAGS="-lcrypt" ./configure

不用自己写符号文件了,现在编译,安装都PASS了!
但是还是
yb_p690#valgrind
valgrind: can't stat /usr/local/lib/valgrind/ppc64-aix5/memcheck

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
5 [报告]
发表于 2010-01-25 17:00 |只看该作者
我记得valgrind只能在x86的机器上用吧?

论坛徽章:
0
6 [报告]
发表于 2010-01-26 18:44 |只看该作者
我装了gnu sed之后就可以生产memcheck文件了,不会报错了,can't stat /usr/local/lib/valgrind/ppc64-aix5/memcheck
现在的问题是执行就coredump 。dbx调试也看不出什么。
yb_p690(dev):/usr/local/bin>valgrind
Segmentation fault

dbx 调试结果如下

yb_p690#dbx -I /home/dev/wuyh/software/valgrind-3.3.1/coregrind valgrind core
Type 'help' for help.
warning: The core file is not a fullcore. Some info may
not be available.
[using memory image in core]
reading symbolic information ...internal error: 1283-228 expected char ',', found ';-31,448,256;;'
internal error: 1283-228 expected char ';', found ',256;;'
internal error: 1283-232 index("256;;", ':') failed
internal error: unexpected value 120 at line 5121 in file stabstring.c
中间一堆内部错误


Segmentation fault in main at line 1687 in file "launcher-aix5.c"
1687         kill( getpid(), (int)WTERMSIG(status) );
(dbx) where
main(argc = 4096, argv = 0x0000000110035570, envp = 0xffffffffffffffff), line 1687 in "launcher-aix5.c"
(dbx) list
1688         /* presumably NOTREACHED? */
1689         return 0; /* This is completely bogus */
1690      }
1691      else {
1692         /* erm.  Can we ever get here? */
1693         assert(0);
1694         return 0;
1695      }
1696   
1697     latched_error:

论坛徽章:
0
7 [报告]
发表于 2010-01-26 18:45 |只看该作者

回复 #5 koolcoy 的帖子

3.3.0,3.3.1可以装成功装在AIX上,3.4.0,3.4.1,3.5.0不能在AIX上装

论坛徽章:
0
8 [报告]
发表于 2011-08-26 08:46 |只看该作者
Welcome to AIX Version 5.3!                                                *
*                                                                             *
*                                                                             *
*  Please see the README file in /usr/lpp/bos for information pertinent to    *
*  this release of the AIX Operating System.  

vi test.c
"test.c" 16 lines, 229 characters
#include<stdlib.h>


void leak()
{
        int* p = (int*)malloc(10*sizeof(int));
        p[10] = 'a';
}

int main(int argc,char* argv[])
{
        printf("begin to leak \n");
        leak();
        printf("leak a lot \n");
        return 0;
}

valgrind-3.4.1

valgrind --tool=memcheck ./a.out
==7729550== Memcheck, a memory error detector.
==7729550== Copyright (C) 2002-2008, and GNU GPL'd, by Julian Seward et al.
==7729550== Using LibVEX rev 1884, a library for dynamic binary translation.
==7729550== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.
==7729550== Using valgrind-3.4.1, a dynamic binary instrumentation framework.
==7729550== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.
==7729550== For more details, rerun with: -v
==7729550==
begin to leak
==7729550== Invalid write of size 4
==7729550==    at 0x100004D4: leak (in /proc/7729550/object/a.out)
==7729550==    by 0x1000052F: main (in /proc/7729550/object/a.out)
==7729550==  Address 0x216a4050 is 0 bytes after a block of size 40 alloc'd
==7729550==    at 0xDD1ED5B0: malloc (vg_replace_malloc.c:207)
==7729550==    by 0x100004BB: leak (in /proc/7729550/object/a.out)
==7729550==    by 0x1000052F: main (in /proc/7729550/object/a.out)
leak a lot
==7729550==
==7729550== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
==7729550== malloc/free: in use at exit: 40 bytes in 1 blocks.
==7729550== malloc/free: 1 allocs, 0 frees, 40 bytes allocated.
==7729550== For counts of detected errors, rerun with: -v
==7729550== searching for pointers to 1 not-freed blocks.
==7729550== checked 9,012,008 bytes.
==7729550==
==7729550== LEAK SUMMARY:
==7729550==    definitely lost: 0 bytes in 0 blocks.
==7729550==      possibly lost: 0 bytes in 0 blocks.
==7729550==    still reachable: 40 bytes in 1 blocks.
==7729550==         suppressed: 0 bytes in 0 blocks.
==7729550== Rerun with --leak-check=full to see details of leaked memory.

论坛徽章:
0
9 [报告]
发表于 2011-08-26 08:49 |只看该作者
回复 4# cu_baihuihui


    这个就是你config的时候指定的那个目录
sh configure --prefix=/yourpath --enable-only32bit

后面你要把编译出来的程序按提示,放在指定的目录
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP