利用QEMU+GDB调试Linux内核

利用QEMU+GDB调试Linux内核

对于用户态进程,使用gdb进行代码调试是一种非常方便的方法。而对于内核态问题,我们可以利用一些工具如crash,基于coredump文件进行调试。

一个FORK的面试题

一个FORK的面试题

前两天有人问了个关于Unix的fork()系统调用的面试题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:

copy_{to,from}_user()的思考

copy_{to,from}_user()的思考

对于copy_{to,from}_user()接口的使用,我们应该都非常熟悉了。大多数Linux书籍都会介绍它的作用,毕竟它在内核空间和用户空间之间起着桥梁的作用。所有的数据交互都应该使用类似这种接口。因此,我们应该对它的作用非常清楚。然而,我也曾经有一些疑问:

Linux内核中container_of宏的详细解释

Linux内核中container_of宏的详细解释

在之前的文章中,我们讨论了在移植和使用Linux内核的通用链表时,如何避免重复造轮子,并提供了完整的代码实现。今天,我们将深入分析内核是如何求解结构体成员变量的地址的,尤其是在计算结构体偏移时巧妙地使用了container_of宏定义。

扒一扒ELF文件

扒一扒ELF文件

ELF文件(Executable Linkable Format)是一种文件存储格式。Linux下的目标文件和可执行文件都按照该格式进行存储,有必要做个总结。

valgrind基本功能介绍、基础使用方法说明

valgrind基本功能介绍、基础使用方法说明

Valgrind由内核(Core)和基于内核的其他调试工具组成。内核是Valgrind的核心部分,类似于一个框架,它模拟了一个CPU环境,并为其他工具提供服务。其他工具可以看作是插件,利用内核提供的服务来完成各种特定的内存调试任务。

使用uboot引导应用程序

使用uboot引导应用程序

uboot默认支持执行应用程序,就像它引导内核一样。我们可以自己编写一个应用程序,并让uboot在启动时进行引导。

内核转储的设置

内核转储的设置

当程序在运行过程中发生异常终止或崩溃时,操作系统会将程序当前的内存状态记录并保存在一个文件中,这种行为被称为核心转储(Core Dump)。

使用动态输出打印内核的DEBUG信息

使用动态输出打印内核的DEBUG信息

printk()是许多嵌入式开发人员喜欢使用的一种调试方法。然而,使用printk()进行调试时,每次都需要重新编译内核,这非常不方便。为了解决这个问题,我们可以使用动态输出来方便地打印内核的调试信息,而无需重新编译内核。

【调试】sysRq键使用方法

【调试】sysRq键使用方法

SysRq键是一个非常特殊的键,只要内核没有完全崩溃,它就可以触发内核对其输入的响应。使用SysRq键的组合键,可以收集系统的各种运行信息,包括内存使用情况、CPU任务处理状况、进程的运行状态等。

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部