讨论linux中死机怎么准确定位?

goodyun82 2008-09-09 11:07:54
普通的应用空间的程序死机我们可以借助GDB和GCC tools进行定位,但是下面的情况该怎么办呢?请大家给出宝贵的意见。
(1)应用程序是编译没有带-g选项的release版本
(2)死在动态链接库里面
(3)该体系结构内核不支持KDB,死机在安装模块中
...全文
226 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogofly_lee 2008-09-11
  • 打赏
  • 举报
回复
为什么不能重新编译一个带调试信息的代码重现此问题啦?这样不就可以解决问题了吗?
huyongzs 2008-09-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tb01412 的回复:]
1.用GDB加载程序运行,程序死的时候,用bt命令看调用栈,并且记录倒数第二个栈的函数调用地址
2.再次用GDB加载程序,直接通过设置第一步中的地址作为断点,运行程序
3.在第二步设置的断点程序停止运行,再用GDB命令反汇编,然后一步一步跟踪下去,这时就需要你自己的计算机功底了,能够根据汇编语言看出程序在做什么,就能判断出为什么程序为崩溃
[/Quote]

虽然不是楼主要的答案,但是看过之后又学了一招,赞!
x86 2008-09-10
  • 打赏
  • 举报
回复
如果是release版本,你只能通过gdb的bt查看调用堆栈,这样能了解错误在那个函数,有时候还是很有用的。
goodyun82 2008-09-10
  • 打赏
  • 举报
回复
谢谢各位的回复,但是大家都忽略了我的前提条件是编译并没有-g选项,所以core dump和GDB的使用条件都不成立。
realdragon2 2008-09-10
  • 打赏
  • 举报
回复
一篇core dump的文章.
http://blog.csdn.net/realdragon2/archive/2008/09/02/2868860.aspx
tb01412 2008-09-10
  • 打赏
  • 举报
回复
1.用GDB加载程序运行,程序死的时候,用bt命令看调用栈,并且记录倒数第二个栈的函数调用地址
2.再次用GDB加载程序,直接通过设置第一步中的地址作为断点,运行程序
3.在第二步设置的断点程序停止运行,再用GDB命令反汇编,然后一步一步跟踪下去,这时就需要你自己的计算机功底了,能够根据汇编语言看出程序在做什么,就能判断出为什么程序为崩溃
iasky 2008-09-09
  • 打赏
  • 举报
回复
有core文件么?

看/var/log/message

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧