问题描述
我第一次使用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 (将#修改为@)