当前位置: 首页 > 面试题库 >

Linux内核实时调试,如何完成以及使用哪些工具?

公良信然
2023-03-14
问题内容

在Linux内核上进行实时调试最常用的方法和工具为何?我知道例如Linus。反对这种针对Linux内核的调试,或者至少是反对这种调试,因此在那些年里,在这种意义上没有做太多事情,但是老实说,自2000年以来已经过去了很多时间,我很想知道关于Linux的观念是否已改变项目以及当前使用哪些当前方法在Linux内核上进行实时调试(本地或远程)?

欢迎参考有关所提到的技术和工具的演练和教程


问题答案:

另一种选择是使用ICE /
JTAG控制器和GDB。这种“硬件”解决方案特别适用于嵌入式系统,

但例如Qemu提供类似的功能:

  • 用GDB“远程”存根启动QEMU其上“本地主机:1234”:监听qemu -s ...

  • 然后使用GDB打开vmlinux用调试信息编译的内核文件(您可以查看此邮件列表线程,他们在其中讨论了内核的未优化)。

  • 连接GDB和Qemu: target remote localhost:1234

  • 查看您的 实时 内核:

    (gdb) where
    

    1 0xc0029728 in arch_idle () atarm/mach-realview/include/mach/system.h:36

    2 default_idle () at arm/kernel/process.c:166

    3 0xc00298a8 in cpu_idle () at arch/arm/kernel/process.c:199

    4 0xc00089c0 in start_kernel () at init/main.c:713

不幸的是,到目前为止,使用GDB无法进行用户空间调试(没有任务列表信息,没有MMU重新编程以查看不同的进程上下文,…),但是如果留在内核空间中,那将非常方便。

  • info threads将为您提供不同 CPU 的列表和状态 __

编辑:

您可以在此PDF中获取有关该过程的更多详细信息:

使用GDB和QEMU调试Linux系统。



 类似资料:
  • 问题内容: 我正在从事学术项目,该项目修改了一些代码并包含了新代码。 我正在使用QEMU加载修改后的内核并进行测试。 但是,我发现某些操作系统需要完整的操作系统才能进行调试。 没有它可能吗? 或者,这是可以与Kernel 2.6一起用于系统的发行版。除了运行程序的功能(包括网络支持)以外,发行版不需要具有任何功能。 问题答案: 我认为最简单的方法是使用buildroot http://buildr

  • 问题内容: 我是内核开发的新手,我想知道如何使用QEMU和gdb运行/调试Linux内核。我实际上正在阅读罗伯特·洛夫(Robert Love)的书,但不幸的是,它没有帮助读者了解如何安装适当的工具来运行或调试内核。因此,我要做的是遵循本教程http://opensourceforu.efytimes.com / 2011/02 / kernel-development-debugging-usi

  • 问题内容: Linux内核开发人员如何在提交代码后在本地测试他们的代码?他们是否使用某种单元测试,构建自动化?测试计划? 问题答案: linux内核非常重视社区测试。 通常,任何开发人员都会在提交之前测试他们自己的代码,并且经常会使用Linus的内核开发版本,或者与他们的工作相关的项目使用其他不稳定/开发树之一。这意味着他们经常同时测试自己的变更和其他人的变更。 正式的测试计划的方式往往不多,但是

  • 问题内容: 在Linux内核中有许多安排工作的方法:计时器,tasklet,工作队列和内核线程。什么时候使用一个对另一个的准则是什么? 有明显的因素:计时器功能和小任务无法进入睡眠状态,因此它们无法等待互斥量,条件变量等。 在驱动程序中为我们选择哪种机制的其他因素是什么? 首选的机制是什么? 问题答案: 如您所说,这取决于手头的任务: 工作队列将工作推迟到内核线程中-您的工作将始终在流程上下文中运

  • 问题内容: 我从LDD3第14章读到了有关热插拔驱动程序的信息。我需要编写一个USB鼠标驱动程序,在插入硬件时会加载该驱动程序。现在,通过做一些实验,我知道有一个名为“ hid-generic”的驱动程序,在插拔时会被调用。 另外,lsmod显示 我的疑问如下 1)为了在插入此鼠标时加载模块(hotplug),我必须在内核中禁用这3个驱动程序,并使用id_table中具有供应商和设备ID的驱动程序

  • 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章一起了解下网络性能工具。 一、网络性能指标 二、netstat 三、route 四、iptables 一、网络性能指标 从网络性能指标出发,你更容易把性能工具同系统工作原理关联起来,对性能问题有宏观的认识和把握。这样,当你想查看某个性能指标时,就能清楚知道,可以用哪些工具。 二、netstat Netstat是一个用于检查各种网络相关信息