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 条评论
登录 后参与评论

相关文章

  • 关于cocos2dx中文转UTF8码的解决方案

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

    帘卷西风
  • S_OK,S_FALSE,E_FAIL

    今天在调试一个ICOP的操作的时候,发现连接被动关闭的时候老是会在一处断言处失败,跟了很久终于发现了问题。在此记录一下:

    帘卷西风
  • 关于SQL中Union和Join的用法

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

    帘卷西风
  • QML导入C++类型

    Qt君
  • 编程字体推荐

    对于编码的我们,一个赏心悦目的字体,可以愉悦身心。 以下是我推荐一波等宽字体,有兴趣的可以装一波。

    CRPER
  • C++利器vector

    文章目录 1. vector: 1.1 vector 说明 1.2 vector初始化: 1.3 vector对象的常用内置函数使用(举例说明) 2....

    week
  • 腾讯能否拿下搜狐视频,要看张朝阳能否忍痛割爱

    近日,新浪科技报道称,搜狐内部人士透露腾讯将以认购的方式向搜狐视频注资10亿美金,这一消息或于不久后宣布。这一交易与当年腾讯入股搜狗颇为相似:即腾讯将通过现金投...

    罗超频道
  • Salesforce业务机会分成(Split)介绍

    Salesforce业务机会分成(Opportunity Splits)允许你将一个业务机会的业绩分配给多个团队成员。

    臭豆腐
  • Oracle 19c RAC打补丁过程避坑指南

    导读:记录19.3 rac 打补丁过程中遇到的一些问题19.3升19.5、19.5升19.6。

    数据和云
  • 大神学习单片机的步骤,学完你不是大神你来找我

    任何一款单片机,其实学习步骤都是一样的,不管是8位的入门芯片,还是32位的高速芯片。以下步骤是必须的,按部就班的学完了,你不成大神你来找我。

    单片机技术宅

扫码关注云+社区

领取腾讯云代金券