All Projects → sunShuShu → ValgrindHelperForAndroid

sunShuShu / ValgrindHelperForAndroid

Licence: other
A easy way to use valgrind on Android device.

Programming Languages

shell
77523 projects
java
68154 projects - #9 most used programming language
CMake
9771 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to ValgrindHelperForAndroid

ghaction-cmake
cmake swiss army knife github docker action
Stars: ✭ 19 (-64.15%)
Mutual labels:  valgrind
valgrind
Enhanced Valgrind for Persistent Memory
Stars: ✭ 85 (+60.38%)
Mutual labels:  valgrind
c-project-template
A C project template with Makefile, command line options parsing, unittest using cmocka and valgrind
Stars: ✭ 97 (+83.02%)
Mutual labels:  valgrind
minishell tester
42 | Complex tester for minishell (42cursus)
Stars: ✭ 31 (-41.51%)
Mutual labels:  valgrind
FpDebug
Dynamic Program Analysis based on Valgrind to find Floating-Point Accuracy Problems
Stars: ✭ 19 (-64.15%)
Mutual labels:  valgrind
printfTester
Tester for the ft_printf project of 42 school
Stars: ✭ 94 (+77.36%)
Mutual labels:  valgrind
verrou
floating-point errors checker
Stars: ✭ 39 (-26.42%)
Mutual labels:  valgrind
memcheck-cover
An HTML generator for Valgrind's Memcheck tool
Stars: ✭ 30 (-43.4%)
Mutual labels:  valgrind
gnlTester
Tester for the get_next_line project of 42 school
Stars: ✭ 87 (+64.15%)
Mutual labels:  valgrind
libftTester
Tester for the libft project of 42 school
Stars: ✭ 141 (+166.04%)
Mutual labels:  valgrind
cargo-valgrind
A cargo subcommand, that runs valgrind and displays its output in a helpful manner.
Stars: ✭ 66 (+24.53%)
Mutual labels:  valgrind
massif.js
Visualize Valgrind Massif memory consumption online.
Stars: ✭ 30 (-43.4%)
Mutual labels:  valgrind
ruby memcheck
Use Valgrind memcheck on your native gem without going crazy
Stars: ✭ 90 (+69.81%)
Mutual labels:  valgrind

ValgrindHelperForAndroid

A easy way to use valgrind on Android device.

简介

现在有很多安卓应用因为性能或安全方面原因,会通过JNI调用原生代码。排查原生的C、C++代码时可以使用Valgrind。Valgrind工具包括Memcheck(用于检测C和C++中与内存相关的错误)、Cachegrind(缓存分析器)、Massif(堆分析器)和其他几种工具。Valgrind在Linux开发中应用广泛,但在安卓开发中用起来比较麻烦,官方文档和网上的资料也比较少。这就是这个工具诞生的原因。
关于Valgrind这个工具,这里就不多做介绍了,大家可以参考官网或google.

  • 开始之前的说明:
    1.你的安卓设备需要root.(有兴趣完善这个脚本的朋友可以尝试一下把这条限制去掉)
    2.目前,在下面的电脑和安卓设备中测试成功了(欢迎提交Pull request补充),其他PC和设备可能需要修改脚本。如果需要修改脚本,可以参考原理中的内容。  
    • macOS 10.13 华为荣耀3C(H30-T00) 4.4.2
    • Ubuntu 16.04.3 华为荣耀3C(H30-T00) 4.4.2

*原理和FAQ在Wiki里。
如果你优化了这个脚本的兼容性或修改了bug,(或者有能力把README和Wiki里的内容翻译成英文😂)欢迎提交Pull request❤️

使用

  • 将Valgrind安装到安卓设备上:  

    • 1.下载ValgrindHelperForAndroid.zip和对应你手机cpu架构的Valgrind压缩包: ARMv7, ARM64.
    • 2.解压ValgrindHelperForAndroid.zip,把Valgrind压缩包放到ValgrindHelperForAndroid文件夹中。就像这样:  
    • 3.在终端中执行下面的命令:  
     cd <ValgrindHelperForAndroid Path>  
     ./sss_valgrind_android.sh -i
    
    • 4.出现下面的提示说明安装成功:
      DONE, install valgrind success!
  • 用Valgrind启动安卓app:  

    • 1.安装app。建议用ValgrindHelperForAndroid中的valgrind_test工程测试,make project, debug app。  
    • 2.在终端中执行下面的命令:
     cd <ValgrindHelperForAndroid Path>
     ./sss_valgrind_android.sh
    
    • 3.输入Valgrind命令参数。(可以直接输入回车,用Valgrind默认的参数)  
    • 4.输入app的包名。(valgrind_test工程为com.sunshushu.test)
    • 5.输入app的MainActivity的名称。(valgrind_test工程为MainActivity)
    • 6.输入工程中带符号表的库的路径。(valgrind_test工程为valgrind_test/app/build/intermediates/cmake/debug/obj/armeabi-v7a)
    • 7.等待app启动。这个过程可能会很长,设备中途可能会无响应或黑屏,你可以先去喝杯咖啡☕️先不要关闭终端)  
    • 8.测试app。valgrind_test中,点击app的“MEMORY ISSUES”按钮,会产生3个内存问题。然后点击“EXIT”按钮,正常退出app.
      (由于Valgrind在应用结束之前要进行一些工作,如果直接强制关闭app可能导致内存问题排查不全面,所以这里设计了EXIT按钮。)
  • 强制关闭app,并从安卓设备取回Valgrind的日志。
    在终端中继续执行下面的命令:
    DONE
    等待终端中出现下面的提示时,到ValgrindHelperForAndroid文件夹中查看Valgrind日志即可。
    DONE. Check the log(s) in ...
    如果你在上面的第8步中点击“EXIT”按钮关闭了app,这里的强制关闭不会影响Valgrind彻底排查内存问题。

  • 查看日志。在日志中搜索app的包名,看一下是不是有内存问题吧。
    (日志文件名中的数字是线程ID(PID)。)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].