linux安装valgrind

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)

       最近服务器程序出了一个崩溃,确定是内存地址访问越界,但是不能定位在哪里,没办法只好用valgrind来跑一下,以前公司的服务器是上都默认安装了,突然发现云服务器上没有安装这个软件,所以记录一下如何安装。

添加一个备注信息:valgrind不能调试luajit,创建luastate会失败。必须使用原生lua。

       1、下载最新版本的valgrind: http://www.valgrind.org/downloads/valgrind-3.11.0.tar.bz2 解压安装包:tar xvf valgrind-3.11.0.tar.bz2,解压后生成目录valgrind-3.11.0。

      目前支持的平台,在官网上列表如下:       {x86,amd64,arm,ppc32,ppc64,s390x,mips32,mips64}-linux, arm-android (2.3 and later), x86-android (4.0 and later) and {x86,amd64}-darwin (Mac OS X 10.7, with limited support for 10。

      2、安装前配置编译选项,所以配置如下:

      # cd valgrind-3.11.0

      # ./configure --prefix=/home/valgrind/bin

      3、编译和安装valgrind

      # make

      # make install

      4、到这来已经安装成功了,但还不能直接使用,需要创建一个软连接。

      # cd /usr/bin/

      # ln -s /home/valgrind/bin/bin/valgrind valgrind

      最后我们测试一下吧,如果运行so文件失败,可能需要设置库目录。

      # export LD_LIBRARY_PATH=`pwd`

      # valgrind ./WorldFrame_d -c 2

      然后看看终端的显示,确定是否正确安装。

      ==30079== Memcheck, a memory error detector
      ==30079== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
      ==30079== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info
      ==30079== Command: ./WorldFrame_d -c 2
      ==30079== 
      begin load xml...
      begin read file...
      fileLength = 846
      begin decrypt file...
      pTiXmlDocument::begin parse file...
      ==30079== Conditional jump or move depends on uninitialised value(s)
      ==30079==    at 0x50F351F: TiXmlBase::StringEqual(char const*, char const*, bool,       TiXmlEncoding) (tinyxmlparser.cpp:549)
      ==30079==    by 0x50F426F: TiXmlElement::Parse(char const*, TiXmlParsingData*, TiXmlEncoding) (tinyxmlparser.cpp:1094)
      ==30079==    by 0x50F399D: TiXmlDocument::Parse(char const*, TiXmlParsingData*, TiXmlEncoding) (tinyxmlparser.cpp:744)
      ==30079==    by 0x50E8049: CSchemeEngine::__LoadXML(char const*, bool, TiXmlDocument*) (SchemeEngine.cpp:353)
      ==30079==    by 0x50E7E29: CSchemeEngine::__Load(char const*, CCsvReader*, TiXmlDocument*, bool&) (SchemeEngine.cpp:277)
      ==30079==    by 0x50E76B1: CSchemeEngine::LoadScheme(char const*, ISchemeUpdateSink*) (SchemeEngine.cpp:92)
      ==30079==    by 0x4391D0: ServerScheme::LoadScheme(ISchemeEngine*, char const*, unsigned int) (ServerScheme.cpp:11)
      ==30079==    by 0x433E0A: main (ServerApp.cpp:62)
      ==30079== 
      ==30079== Conditional jump or move depends on uninitialised value(s)
      ==30079==    at 0x50F2D35: TiXmlBase::SkipWhiteSpace(char const*, TiXmlEncoding) (tinyxmlparser.cpp:315)
      ==30079==    by 0x50F3ABB: TiXmlDocument::Parse(char const*, TiXmlParsingData*, TiXmlEncoding) (tinyxmlparser.cpp:770)
      ==30079==    by 0x50E8049: CSchemeEngine::__LoadXML(char const*, bool, TiXmlDocument*) (SchemeEngine.cpp:353)
      ==30079==    by 0x50E7E29: CSchemeEngine::__Load(char const*, CCsvReader*, TiXmlDocument*, bool&) (SchemeEngine.cpp:277)
      ==30079==    by 0x50E76B1: CSchemeEngine::LoadScheme(char const*, ISchemeUpdateSink*) (SchemeEngine.cpp:92)
      ==30079==    by 0x4391D0: ServerScheme::LoadScheme(ISchemeEngine*, char const*, unsigned int) (ServerScheme.cpp:11)
      ==30079==    by 0x433E0A: main (ServerApp.cpp:62)
      ==30079== 
      Sock.dll, version 30 
      --LongWorkerProc(), long worker thread startup, id=30080    

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏.NET技术

.net core实践系列之SSO-同域实现

SSO的系列还是以.Net Core作为实践例子与大家分享,SSO在Web方面复杂度分同域与跨域。本篇先分享同域的设计与实现,跨域将在下篇与大家分享。

3532
来自专栏林滨的专栏

ABP 框架 数据库底层迁移 Mysql 集群

我的各种github 开源项目和代码:https://github.com/linbin524

1510
来自专栏喵了个咪的博客空间

[喵咪Redis]Redis-Sentinel

[喵咪Redis]Redis-Sentinel ? 前言 redis-Sentinel 是我们这次来一同学习 redis 的重点,在我们现在的系统已经离不开 r...

3194
来自专栏菩提树下的杨过

Enterprise Library 4.1学习笔记8----缓存应用程序块之FileDependency

写入缓存数据时如果使用了FileDependency方式,最终的效果会让缓存是否过期依赖于某一个具体的文件,只要这个文件没有修改,缓存一直 有效,反之如果这个文...

2055
来自专栏JadePeng的技术博客

asp.net MVC 权限设计

几点说明:     1、该权限系统是个网站用的,用户简单,因此不涉及到部门这些信息     2、基于将角色与controller、action相关联来判断...

4899
来自专栏码农阿宇

.Net Core从命令行读取配置文件

最近在学习博客园腾飞(jesse)的.Net Core视频教程,收益匪浅,在此作推荐 : http://video.jessetalk.cn/ 言归正传,.Ne...

3004
来自专栏更流畅、简洁的软件开发方式

【自然框架】QuickPager分页控件,新增一种分页方式——伪URL分页(Postback版)

适用场景   先说一下伪URL分页的适用场景。在网站的网页里实现查询功能,如果查询条件比较少的话,还比较好办,把查询条件放到URL里面传递即可。但是如果查...

2376
来自专栏三杯水

Redis3.2.9/4.0.1集群部署配置优化

http://www.redis.cn/topics/cluster-spec.html

3132
来自专栏散尽浮华

redis持久化策略梳理及主从环境下的策略调整记录

redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。可以不定期的通过异步方式保存到磁盘上(即“半持久化模式”...

44610
来自专栏听雨堂

页面状态保持机制(编辑中)

Web应用程序中,有很多状态需要在页面的反复回调中能够保持住,还有一些状态需要在页面之间保持。对于状态的保持,是一个值得研究的问题。状态处理不当是页面失效或错误...

2695

扫码关注云+社区