首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当前Linux内核调试技术

当前Linux内核调试技术
EN

Stack Overflow用户
提问于 2009-11-19 18:16:07
回答 4查看 4.2K关注 0票数 21

linux机器在启动和运行软件(包括自定义驱动程序)后几个小时就会冻结。我正在寻找一种方法来调试这样的问题。最近,Linux内核调试技术取得了重大进展,不是吗?

我很乐意分享一些关于这个话题的经验。

EN

回答 4

Stack Overflow用户

发布于 2009-11-19 22:29:47

SystemTap之于Linux就像Dtrace之于Solaris。然而,我发现它使用起来相当不友好。不过,你可能还是想试一试。注意:使用调试信息编译内核,并花一些时间处理内核插装钩子。

这就是为什么在根据经验将bug缩小到特定模块之后,许多人仍然在使用printk()。

我并不推荐它,只是指出它是存在的。我可能还不够聪明去欣赏一些潜在的美..我只是为奇怪的设备写驱动程序。

票数 6
EN

Stack Overflow用户

发布于 2009-11-21 03:44:00

根据您要调试的问题的类型,有许多不同的技术。在您的例子中,第一个问题是“系统真的冻结了吗?”您可以启用神奇的SysRq键,并在freeze状态下检查系统状态,然后从那里开始。

最直接、最强大的方法可能是启用内核调试器并通过串行电缆连接到它。

票数 2
EN

Stack Overflow用户

发布于 2012-02-24 22:37:54

一种选择是使用Kprobes。在谷歌上快速搜索一下,就会显示出你需要的所有信息。使用它并不是特别困难。Kprobes是由IBM创建的,我相信它是内核调试的解决方案。它本质上是printk()的一种精心设计的形式,但是它允许您处理使用处理程序插入的任何“断点”。这可能就是你要找的东西。你所需要做的就是把一个模块写进内核,它会处理你在模块中指定的任何“断点”命中。

希望这是一个有用的选择……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1762253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档