我需要知道如何找出共享库中的内存泄漏,这些库将被加载到发布的二进制文件中。我指的是我使用-g选项构建的共享库,但是加载共享库的二进制文件不是使用-g选项构建的。
我得到的泄漏报告如下。
==739== at 0x4A05809: malloc (vg_replace_malloc.c:149)
==739== by 0x84781B1: ???
==739== by 0x87507F5: ???
==739== by 0x874CF47: ???
==739== by 0x874E657: ???
==739== by 0x874F7C2: ???
==73
我正在尝试从终端在远程计算机上运行一个可执行文件-- SaTScanBatch,SaTScan软件的可执行文件。
这是我所犯的错误
/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.15' not found
问题类似于这样的问题:、或
在我的例子中,不同的是我没有管理权限,所以我不能在usr/lib文件中添加库。我在远程存储库中下载了libstdc++.6.0.15,我想使用它来执行我的文件。
以下是我尝试过的可能性
i)将环境变量LD_LIBRARY_PATH、LD_RUN_PATH或LD_PRELOAD修改为libstdc++
我已经为一个嵌入式设备编译了val差制,并执行了下面的命令来检查泄漏。
./valgrind --leak-check=full --xml=yes --xml-file=<xml file path> <application>
但是它给出了以下错误。
valgrind: Fatal error at startup: a function redirection
valgrind: which is mandatory for this platform-tool combination
valgrind: cannot be set up. Details
我想对一个本机模块使用GCC的消毒器。
我使用链接选项:
-static-libasan -static-libtsan -static-liblsan -static-libubsan -fsanitize=address -lasan -lubsan
当我加载本机模块时,它会打印错误消息:
ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD.
现在看