【发布时间】:2017-05-24 10:20:19
【问题描述】:
我已经通过 make 文件编译了我的 cpp 文件。我也通过这个 make 文件运行了我的文件。
这个多线程应用程序也使用了 99% 的 CPU。我使用Ubuntu 16.04.1 LTS 作为我的操作系统。
运行了三天后,我发现应用突然停止了,我在终端上看到了这个意外的错误信息。
Makefile:: recipe for target 'myMain' failed
make: *** myMain Killed
没有其他错误信息。此应用程序失败,没有异常错误消息。尽管没有人编写完整的证明应用程序,但我对我编写的程序(关于失败)非常有信心。
我也从未见过make: *** something Killed的消息。
不幸的是,这是一个我不能轻易地一次又一次地重复以查看问题所在的情况。
我想知道make 应用程序或Ubuntu 是否有任何机制可以在长时间运行并占用大量资源时杀死任何应用程序?
更新
感谢用户Basile Starynkevitch,这是我从dmesg收到的结果:
[351059.556308] Out of memory: Kill process 2794 (main) score 882 or sacrifice child
[351059.556318] Killed process 2794 (main) total-vm:30432908kB, anon-rss:13530324kB, file-rss:0kB
【问题讨论】:
-
考虑使用valgrind 来调试您的应用程序。您还可以限制内存(例如,使用 bash shell 的
ulimit内置) -
@BasileStarynkevitch,你说的很棒。然而,再次运行这个应用程序并让它运行几天直到它崩溃是一个非常困难的过程。
dmesg已经显示了我应该解决的问题。