使用valgrind冻结程序发现C内存泄漏

问题描述

我第一次使用valgrind,并且尝试使用它来发现程序(https://github.com/ardera/flutter-pi)中的内存泄漏。该应用程序是嵌入式GUI应用程序,可直接与某些内核设备进行通信。我在其上执行的体系结构是ARMv7,hardfp ABI上的linux。

但是,在使用valgrind启动程序之后,该进程完全挂起,在单个CPU内核上消耗了100%的CPU。挂起时,内存使用量保持不变。 (内存使用率远低于100%btw)

我无法使用Ctrl + C终止它,通过htop发送 SIGTERM 不起作用,我尝试过的vgdb命令(例如vgdb v.info scheduler或仅vgdb v.info )不起作用,因为valgrind gdbserver不会向管道发送回复。如果我使用--vgdb=yes --vgdb-error=1并通过gdb连接到valgrind gdbserver,那么我什至不能在那儿按Ctrl + C。我也必须使用SIGKILL杀死它。

通常,应该在stdout中进行一些登录,并在5秒钟后在我的屏幕上看到一个GUI。如果我使用valgrind,则等待15分钟后,stdout中根本没有程序记录,也没有GUI。

Valgrind确实会输出一些内容,这主要与访问未初始化的内存有关。 (使用未初始化值,条件跳转或移动取决于未初始化值等)。完整输出为here

有人知道是什么原因造成的吗?这是valgrind中的错误还是我的代码?有谁知道寻找内存泄漏的替代方法?如果这是我代码中的错误,该如何找到它?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...