嗨,我最近在用C编写的linux项目中。 这个应用程序有几个进程,它们共享一个共享内存块...当应用程序运行几次小时,一个进程崩溃没有任何足迹,因此很难不知道问题是什么或在哪里我可以开始审查代码....好吧,它可能是内存溢出或指针marused ...但我不知道。 .. 你有任何工具或任何方法来检测问题... 它将非常感激,如果它得到解决。 thanx为您的建议...如何检测我的应用程序在Linux中崩溃的位置
4
A
回答
4
之前启动该程序,使核心转储:
ulimit -c unlimited
(并确保过程的工作目录是进程可写)
的进程崩溃后,就应该留下一个core
文件,然后你可以gdb
检查:
gdb /some/bin/executable core
此外,还可以根据运行过程当你启动它时 - gdb
会在进程崩溃时唤醒。
1
Valgrind是你需要下一步去的地方。机会是你有一个良性的记忆错误问题 - 直到它不是。运行valgrind下的程序,看看它说什么。
3
如果您正在运行emacs,您也可以在gdb-many-windows中运行gdb。这给你更好的调试选项,可以让你检查堆栈等东西。这很像Visual Studio IDE。
这里是一个有用的链接
http://emacs-fu.blogspot.com/2009/02/fancy-debugging-with-gdb.html
0
我同意bmargulies - Valgrind是绝对目前最好的工具来自动检测不正确的内存使用情况。几乎所有的Linux发行版都应该拥有它,所以只需emerge valgrind
或apt-get install valgrind
或任何发行版使用。然而,Valgrind并不是存在的最神秘的东西,它通常只能帮助你判断程序最终是以什么方式错误地访问内存 - 如果你在一个变量中存储了一个不正确的数组索引,然后在之后访问这个数组,那么你仍然必须弄清楚。特别是在与GDB这样强大的调试器配对时(然而,backtrace
或bt
命令是你的朋友),Valgrind是一个非常有用的工具。
只要记住用-g
标志进行编译(如果您至少使用GCC),或者Valgrind和GDB将无法告诉您在源中发生内存滥用的位置。
相关问题
- 1. 如何测试应用程序崩溃的位置?
- 2. 如何让我的应用程序的崩溃位置?
- 3. Android的位置应用程序崩溃
- 4. 应用程序在检测到应用程序时崩溃
- 5. 崩溃的位置程序
- 6. Adapter.getItem(位置)崩溃应用程序
- 7. 如何检测线程和崩溃的位置?
- 8. Android - 我如何检测什么是崩溃我的应用程序?
- 9. 如何识别应用程序崩溃的位置?
- 10. 如何使用swift检测应用程序崩溃?
- 11. 的Android应用程序测验崩溃
- 12. 在Android中检测应用程序崩溃
- 13. UITableView的崩溃我的应用程序
- 14. ConcurrentModificationException的崩溃我的应用程序
- 15. AdView的崩溃我的应用程序
- 16. 使用.bat检测崩溃的应用程序
- 17. 如何崩溃的应用程序
- 18. setText崩溃我的应用程序
- 19. 我的应用程序崩溃:layout_below
- 20. android adapter.add()崩溃我的应用程序
- 21. onSaveInstanceState崩溃我的应用程序
- 22. NSTimer崩溃我的应用程序
- 23. admob崩溃我的应用程序
- 24. 我的应用程序不断崩溃
- 25. LOCAL_SHARED_LIBRARIES崩溃我的应用程序
- 26. 我的应用程序崩溃
- 27. AsyncTask崩溃我的应用程序
- 28. DebugView使我的应用程序崩溃
- 29. 应用程序崩溃时我的drawRect
- 30. android setText崩溃我的应用程序