什么样的bug挂起Linux?

时间:2011-10-31 20:03:22

标签: c linux

我正在尝试调试一个简单的跨平台命令行程序(C语言分析器,本身用C语言编写)并遇到一些奇怪的事情。

在Windows上,当我在一个小数据集(glib的源代码)上运行它时,它成功完成,当我在一个大型数据集(Linux内核的源代码)上运行它时,它以内存不足的形式退出错误。我不确定后者是否是我的代码中的错误或仅仅是因为不仅仅优化了内存消耗,所以我一直试图在Linux上运行它以便我可以从valgrind获得一些反馈。

在Linux上(VirtualBox中的Ubuntu 11.04 x64),当我在一个小数据集上运行我的程序时,它成功完成,当我在一个大型数据集上运行时,Linux锁定得足够严重,我必须重置整个虚拟框(鼠标)指针仍然移动,但除此之外它完全没有响应; Windows任务管理器说虚拟盒使用百分之百的CPU核心但不分配内存。

我不希望我的代码中的一个错误导致Linux崩溃,除非我写的是设备驱动程序,当我尝试分配太多内存的简单测试用例,进入无限循环或两者兼而有之时,Linux可以处理它们就好了。我应该寻找什么样的错误,或者我错过了什么?

2 个答案:

答案 0 :(得分:3)

  

在Linux上(VirtualBox中的Ubuntu 11.04 x64)

可能您没有为虚拟机预留足够的内存。

答案 1 :(得分:2)

这很可能是一个无限循环(很容易在解析器中完成),这很容易占用100%cpu或100%ram。

附加调试器!

e.g。 gdb http://www.gnu.org/s/gdb/

gdb在Ubuntu上附带gcc等等......

以下是操作方法:http://www.unknownroad.com/rtfm/gdbtut/gdbtoc.html

编辑:刚看到你已经尝试gdb了。所以,尝试在其上运行strace,它可能会给你一个提示。

除此之外,尝试添加日志消息以查看程序获取的程度(原始,但它最终会起作用!)