前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Memoro:一款功能强大的堆栈数据细节分析工具

Memoro:一款功能强大的堆栈数据细节分析工具

作者头像
FB客服
发布2024-04-26 08:46:50
710
发布2024-04-26 08:46:50
举报
文章被收录于专栏:FreeBufFreeBuf
关于Memoro

Memoro是一款功能强大的堆栈数据细节分析工具,该工具可以给广大研究人员提供关于堆内存数据的详细信息,并给出分析数据。

Memoro不仅可以告诉我们目标程序什么时候、在哪里进行了堆内存分配,而且还可以告诉我们目标程序是如何实际使用这些内存空间的。Memoro支持收集有关堆内存访问的详细信息,其中包括针对内存的读取和写入操作发生的时间,这样一来,广大研究人员将能够更加清楚地了解目标程序如何高效地使用堆内存空间,并提升堆内存的安全性。

值得一提的是,Memoro还提供了一个可视化应用程序,可以将所有的信息提炼为评分和指标,以更好地帮助我们确定问题区域。

工具下载&配置

Memoro由编译器和可视化应用程序组成,代码的构建需要使用到下列组件:

LLVM Clang CompilerRT

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone git@github.com:epfl-vlsc/memoro.git

然后切换到项目目录中:

代码语言:javascript
复制
cd memoro

编译器

运行下列命令完成编译器的配置:

代码语言:javascript
复制
mkdir memoro_compiler

cd memoro_compiler

git clone -b memoro_80 https://github.com/epfl-vlsc/llvm.git

cd llvm/tools

git clone -b memoro_80 https://github.com/epfl-vlsc/clang.git

cd ../projects`

git clone -b memoro_80 https://github.com/epfl-vlsc/compiler-rt.git

cd ../../

mkdir build

cd build

cmake -G "Ninja" ../llvm

ninja

可视化应用程序

Memoro的可视化应用程序是一个Electron应用,其安装命令如下:

代码语言:javascript
复制
cd memoro

npm install

cd cpp

make

cd ../

npm start

工具使用

针对小型程序进行分析

下列命令可以针对一个小型程序或简单文件执行分析:

代码语言:javascript
复制
<path to llvm clone>/bin/clang++ -fsanitize=memoro -g -fno-omit-frame-pointer test.cpp

./a.out

执行后,该工具首先会生成一个名为typefiles的文件夹,其中存储了类型信息。还有大量.chunks / *.trace文件,主要用于结合可视化应用程序来帮助我们分析目标应用程序。

针对大型程序进行分析

在下面的例子中,我们将尝试分析LevelDB(由Google开发的开源键值存储库)。具体操作步骤如下。

首先,我们需要将下列内容添加到CMakeLists.txt中:

代码语言:javascript
复制
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=memoro")

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/")

然后构建LevelDB,并运行db_bench程序即可,使用上述命令对LevelDB执行分析后,我们将能够查看到如下图所示的结果:

工具运行截图

许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

项目地址

Memoro:

https://github.com/epfl-vlsc/memoro

【FreeBuf粉丝交流群招新啦!

https://epfl-vlsc.github.io/memoro/ https://github.com/epfl-vlsc/llvm https://github.com/epfl-vlsc/clang https://github.com/epfl-vlsc/compiler-rt https://github.com/google/leveldb

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-20,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编译器
  • 可视化应用程序
  • 针对小型程序进行分析
  • 针对大型程序进行分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com