在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
不幸的是,到目前为止,使用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是一个用于检查各种网络相关信息