【问题标题】:how to panic kernel from user land如何从用户空间恐慌内核
【发布时间】:2012-05-11 15:56:33
【问题描述】:

在完成一些操作后我需要恐慌内核并验证做了什么操作

有人可以帮助我知道是否有任何方法吗?我搜索了很多,但没有运气

我正在寻找一些通用调用

提前致谢!

【问题讨论】:

标签: c kernel


【解决方案1】:

你可以试试sysrq trigger

echo c > /proc/sysrq-trigger

'c' - 将通过 NULL 指针取消引用执行系统崩溃。 如果已配置,将进行故障转储。

【讨论】:

  • 但是如果我不在 linux 上怎么办?我正在考虑跨许多操作系统 HP/AIX/Linux/Sol/ 等的通用代码。可能是一个小驱动程序就可以了。但我试图探索是否已经有一些常见的东西可用:(
  • @cnicutar 和 sysctl sys.kernel.sysrq 必须设置为 1
【解决方案2】:

更高的地址范围被映射到内核。如果你在那里写一些东西,例如假设 0xFFFFFF7 内核以分段错误退出您的进程,抱怨访问了非法内存位置。 在用户空间中,您的进程更像是一个沙盒,并且任何非法访问您的进程之外的内存都会被内核以违反分段错误的方式杀死您的进程而罚款。

要使内核恐慌,您可以尝试设置一些错误的硬件寄存器,通常是调用 syscntl sys 调用。

【讨论】:

  • 是的,没错。但我不想要我的进程的核心转储。我需要探索一下如何将 syscntl 用于我的目的。
  • 我已经修复了由于寄存器操作的 syscntl 参数错误导致的错误 :-)
  • 我喜欢 ;) 让我看看如何添加这个错误 :) 谢谢!
猜你喜欢
  • 2016-08-29
  • 2013-12-12
  • 2015-12-19
  • 1970-01-01
  • 2020-01-28
  • 2022-11-10
  • 1970-01-01
  • 2012-02-08
  • 2015-12-11
相关资源
最近更新 更多