您的位置:首页 > 移动开发 > Android开发

Android 集成Valgrind内存泄露检测工具

2016-01-05 10:07 441 查看
自己一直在linux下使用valgrind用于应用内存泄漏,网上也找到了宋宝华老师写的有关源码编译移植的文章。我发现在我android编译后out目录里面就有相关的valgrind文件。所以就懒得下载valgrind源码了。
<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/bin/valgrind
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/vgpreload_tsan<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>so
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/vgpreload_core<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>so
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/memcheck<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/vgpreload_drd<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>so
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/massif<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/helgrind<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/vgpreload_helgrind<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>so
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/cachegrind<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/vgpreload_memcheck<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>so
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/drd<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/callgrind<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/vgpreload_massif<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>so
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">none</span><span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>/target/product/g18ref/symbols/system/lib/valgrind/tsan<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li></ul>


第一行是编译出来的bin文件

我把它放在 android 盒子的 data 目录,

第一行之后的都是valgrind所用的库文件

这个库文件可以随便指定。之后用export VALGRIND_LIB= 指定你库文件路径

我开始移植为了小心就和宋宝华老师放的位置一样,

/data/local/valgrind/lib/valgrind
<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">ls /<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">data</span>/<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">local</span>/valgrind/lib/valgrind<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">/</span>
cachegrind<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
callgrind<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
default<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>supp
drd<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
helgrind<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
massif<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
memcheck<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">none</span><span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
tsan<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span>
vgpreload_core<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>so
vgpreload_drd<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>so
vgpreload_helgrind<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>so
vgpreload_massif<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>so
vgpreload_memcheck<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>so
vgpreload_tsan<span class="hljs-attribute" style="box-sizing: border-box;">-arm</span><span class="hljs-attribute" style="box-sizing: border-box;">-linux</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>so</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li></ul>


开始运行的时候发现少default.supp文件。

把out/target/product/g18ref/obj/lib/default.supp文件移到valgrind就可以了。

在运行valgrind一定要指定库文件路径
<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">export <span class="hljs-constant" style="box-sizing: border-box;">VALGRIND_LIB</span>=<span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/data/local</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/valgrind/lib</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/valgrind</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
<code class="hljs cpp has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include <stdio.h></span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include <stdlib.h></span>

main(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> argc, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">char</span> **argv)
{

<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">char</span> *p = <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">malloc</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>);
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">char</span> *q = <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">malloc</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>);

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//free(p);</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//free(q);</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span>;
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul>


这是我编写的测试文件一看就有问题。

然后拷贝到android的data目录下。
<code class="hljs haskell has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-title" style="box-sizing: border-box;">ls</span> <span class="hljs-typedef" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">data</span></span>
<span class="hljs-title" style="box-sizing: border-box;">lost</span>+found
<span class="hljs-title" style="box-sizing: border-box;">media</span>
<span class="hljs-title" style="box-sizing: border-box;">misc</span>
<span class="hljs-title" style="box-sizing: border-box;">pptv</span>
<span class="hljs-title" style="box-sizing: border-box;">preinstall_md5</span>
<span class="hljs-title" style="box-sizing: border-box;">property</span>
<span class="hljs-title" style="box-sizing: border-box;">resource</span>-cache
<span class="hljs-title" style="box-sizing: border-box;">ssh</span>
<span class="hljs-title" style="box-sizing: border-box;">system</span>
<span class="hljs-title" style="box-sizing: border-box;">user</span>
<span class="hljs-title" style="box-sizing: border-box;">valgrind</span>
<span class="hljs-title" style="box-sizing: border-box;">xc</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul>


其中 pptv是上面的测试文件 valgrind就是./target/product/g18ref/symbols/system/bin/valgrind文件。千万别把上面测试程序命名 test。

在中断下运行命令
<code class="hljs haml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">./valgrind --leak-check=full --track-origins=yes  ./pptv
=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>== <span class="hljs-constant" style="box-sizing: border-box;">Memcheck</span>, a memory error detector
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>== <span class="hljs-constant" style="box-sizing: border-box;">Copyright</span> (<span class="hljs-constant" style="box-sizing: border-box;">C</span>) <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2002</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2011</span>, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> <span class="hljs-constant" style="box-sizing: border-box;">GNU</span> <span class="hljs-constant" style="box-sizing: border-box;">GPL</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'d, by Julian Seward et al.
</span></span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>== <span class="hljs-constant" style="box-sizing: border-box;">Using</span> <span class="hljs-constant" style="box-sizing: border-box;">Valgrind</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.6</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> <span class="hljs-constant" style="box-sizing: border-box;">LibVEX</span>; rerun with -h <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> copyright info
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>== <span class="hljs-constant" style="box-sizing: border-box;">Command</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> ./pptv
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>== <span class="hljs-constant" style="box-sizing: border-box;">HEAP</span> <span class="hljs-constant" style="box-sizing: border-box;">SUMMARY</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==     <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> use at <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">exit:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">15</span> bytes <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> blocks
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==   total heap <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">usage:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> allocs, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> frees, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">15</span> bytes allocated
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>== <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span> bytes <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> blocks are definitely lost <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> loss record <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> of <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==    at <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x4897CCC</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> malloc (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> /data/local/valgrind/lib/valgrind/vgpreload_memcheck-arm-linux.so)
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==    by <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x1083C7</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> ??? (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> /data/pptv)
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>== <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span> bytes <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> blocks are definitely lost <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> loss record <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> of <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==    at <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x4897CCC</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> malloc (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> /data/local/valgrind/lib/valgrind/vgpreload_memcheck-arm-linux.so)
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==    by <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x1083CD</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> ??? (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> /data/pptv)
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>== <span class="hljs-constant" style="box-sizing: border-box;">LEAK</span> <span class="hljs-constant" style="box-sizing: border-box;">SUMMARY</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==    definitely <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">lost:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">15</span> bytes <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> blocks
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==    indirectly <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">lost:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> bytes <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> blocks
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==      possibly <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">lost:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> bytes <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> blocks
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==    still <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">reachable:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> bytes <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> blocks
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==         <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">suppressed:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> bytes <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> blocks
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>==
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>== <span class="hljs-constant" style="box-sizing: border-box;">For</span> counts of detected <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> suppressed errors, rerun <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">with:</span> -v
</span>=<span class="ruby" style="box-sizing: border-box;">=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6285</span>== <span class="hljs-constant" style="box-sizing: border-box;">ERROR</span> <span class="hljs-constant" style="box-sizing: border-box;">SUMMARY</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> errors from <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> contexts (<span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">suppressed:</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> from <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>)</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li></ul>


发现上面报的错很明显。很好用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: