程序退出原因不明,用GDB调试无可用信息,棘手
最近在调试代码时(kernel linux2.6)出现一个很头疼的问题:程序执行到某一位置(由于项目代码现在已过于庞大,具体哪个位置还未准确定位,打印信息此时已不准确),就直接退出,没有任何提示,没有segment fault,就像很正常退出一样。使用GDB调试,也是什么信息都没有,最后停在命令行:
>gdb Program exit with code 0145
设置ulimit -c 1000000
使用bt,提示no stack(实际情况,应该是不可能的)
现在很头疼,因为相关代码有信号量操作,我自己怀疑是和信号量有关,但是信号量导致程序无声无息退出,难以理解,而且也无法确认是否是这个问题。
请教有没有遇到过类似问题的朋友能够指点一二?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
有可能是栈崩溃了,因为越界把函数调用时入栈的东西给覆盖了
具体出现在那一行也不好找吗。顺着程序入口,以及程序出现异常的情况,加上你的预期结果,应该是可以找到出错地方的。
这个时候正是 strace 或类似工具大显神威的时候
或者是 strace 或类似工具。
yes
这个退出码不是程序里面自己代出来的,所以我不明白是什么意思...
编译的时候-g了没有?