首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核0-使用QEMUGDB调试Linux内核

编译调试内核内核进行调试需要解析符号信息,所以得编译一个调试内核。...$ cd linux-4.14 $ make menuconfig $ make -j 20 这里需要开启内核参数CONFIG_DEBUG_INFOCONFIG_GDB_SCRIPTS。...于是有了initramfs根文件系统,其中包含必要设备驱动工具,boot loader加载initramfs到内存中,内核会将其挂载到根目录/,然后运行/init脚本,挂载真正磁盘根文件系统。...这里没有内核模块,如果需要调试内核模块,可将需要内核模块包含进来。init脚本只挂载了虚拟文件系统procfssysfs,没有挂载磁盘根文件系统,所有调试操作都在内存中进行,不会落磁盘。...Linux把跟一个进程相关thread_info内核栈stack放在了同一内存区域,内核通过esp寄存器获得当前CPU上运行进程内核栈栈底地址,该地址正好是thread_info地址,由于进程描述符指针

2.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    双机调试Linux内核

    利用KGDB双机调试内核 1.1. 环境 1.2. 配置内核编译环境 2. 参考 双机调试Linux内核环境配置。...利用KGDB双机调试内核 环境 centos 7 VMware 全程使用root用户 配置内核编译环境 这种方式调试内核需要两台机器,一台用来运行Linux内核,另一台对内核进行调试。...一般有以下三种常用方案,可以根据电脑性能或资金状况来选择。可以开两个Linux系统虚拟机;也可以在物理机系统是linux上面装虚拟机,然后虚拟机运行一个linux;再就是买开发板来调试内核。...\pipe\com_1 该端是服务器 另一端是虚拟机 clientserver添加串行端口后,测试一下: 在一端输入:cat /dev/ttyS1 在另一端输入: echo helloworld >...(我测试ttyS0不行,改成ttyS1可以了) 参考 http://blog.nsfocus.net/gdb-kgdb-debug-application/ 在VMware中用Kgdb调试linux内核

    4.7K31

    用 kGDB 调试 Linux 内核

    1 简介 这个文档记录了用 kGDB 调试 Linux 内核全过程,都是在前人工作基础上一些总结。以下操作都是基于特定板子来进行,但是大部分都能应用于其他平台。...要使用 KGDB 来调试内核,首先需要修改 config 配置文件,打开相应配置,配置内核启动参数,甚至修改串口驱动添加 poll 支持,然后才能通过串口远程调试内核。...2.3 启动参数 打开相应选项后,需要配置 kernel 启动参数,使 KGDB 内核能够找到正确通信接口。...,之后就能正常进入 kgdb 4 gdb 远程调试 如果在内核启动参数中加入了 kgdbwait ,则内核会在完成基本初始化之后,停留在 kgdb 调试陷阱中,等待主机 gdb 远程连接。...由于大部分板子只有一个调试串口,所以你需要把之前与串口通信 minicom 退出来,然后在内核源码目录下,执行以下命令: $ arm-linux-gnueabi-gcc vmlinux (gdb)

    1.3K22

    使用GDB调试Linux内核

    类似的,Linux内核开发者可以使用GDB远程模式,与调试应用程序几乎相同方式来调试Linux内核。...KGDB是Linux内核源代码级调试器,你可以使用GDB作为KGDB前端,在我们熟悉且功能强大GDB调试界面中调试内核。...使用KGDB需要两台机器,一台作为开发机,另一台是目标机器,要调试内核在目标机器上运行。在开发机上使用gdb运行包含符号信息vmlinux,然后通过指定网络地址端口,连接到目标机器KGDB。...本文将介绍如何在本机搭建Linux内核调试环境,步骤比较繁琐,还会涉及到编译内核。作为内核小白,我会尽量写详细些,毕竟我折腾了很久才成功。...CONFIG_DEBUG_INFO 在内核内核模块中包含调试信息,这个选项在幕后为gcc使用编译器参数增加了-g选项。

    1.4K10

    Linux内核设备驱动之内核调试技术笔记整理

    /****************** * 内核调试技术 ******************/ (1)内核源代码中一些与调试相关配置选项 内核配置选项中包含了一些与内核调试相关选项,都集中在...包括: CONFIG_DEBUG_KERNEL 使其他调试选项可用,应该选中,其本身不会打开所有的调试功能。 具体调试选项说明可参见驱动一书,或通过menuconfighelp说明查看。...(2)如何通过宏对printk调试语句进行全局控制 通过Makefile配合,可以在c文件中定义属于我们自己调试语句。...在某些情况下,oops会导致内核混乱,而混乱结果就是死机,这些情况可能包括: *oops发生在持有锁代码中 *oops发生在硬件设备通讯过程中 *oops在中断上下文中发生 *oops发生在idle...\n", foo); 有些时候,只要打印一下栈信息就可以帮助测试,如dump_stack(): if(!

    2.1K41

    利用vscode远程调试Linux内核

    前言 上一遍文章介绍了利用QEMU+GDB调试Linux内核。但是,有时候直接利用GDB调试查看代码还不是很方便,所以,在这么重要场合,怎么能少了vscode这个神器呢。...本篇文章介绍如何使用vscode远程调试内核。 本文环境: windows10 vscode ubuntu 20.04 我个人使用是腾讯云服务器,所以就省去了安装虚拟机过程。...mkdir -p ~/.vscode-server/bin 将下载压缩包vscode-server-linux-x64.tar.gz放在~/.vscode-server/bin目录下。...运行下面这三行命令,其中${commit_id}需要替换成第2步记录commit_id. cd ~/.vscode-server/bin tar -zxf vscode-server-linux-x64...在vscode中调试内核正常在windows调试代码是一样,侧边栏可以看到变量,监视变量,调用堆栈等,非常方便。 大功告成,以后就可以在可视化界面调试内核了!

    4.1K21

    QEMU调试Linux内核环境搭建

    一个最小可运行Linux操作系统需要内核镜像bzImagerootfs,本文整理了其制作、安装过程,调试命令,以及如何添加共享磁盘。...编译内核源码 从 The Linux Kernel Archives 网站下载内核源码,本文下载版本为4.14.191,4.14.191源码下载。 使用wget获取源码。...内核资料直通车:最新Linux内核源码资料文档+视频资料 学习直通车:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈 配置Busybox 启动内核还需要一个具有根文件系统磁盘镜像文件...内核函数调试 启动命令中添加-s参数与-S参数启动qemu。...在系统中执行ls命令,触发new_sync_read函数, 至此,完成了qemu环境下使用gdb进行内核函数调试

    3.9K20

    利用QEMU+GDB调试Linux内核

    前言 对用户态进程,利用gdb调试代码是很方便手段。而对于内核问题,可以利用crash等工具基于coredump文件进行调试。...其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qemu就是一种。 qemu是一款完全软件模拟(Binary translation)虚拟化软件,在虚拟化实现中性能相对较差。...但利用它在测试环境中gdb调试Linux内核代码,是熟悉Linux内核代码一个好方法。.../arch/x86/boot/bzImage 几种linux内核文件区别: vmlinux 编译出来最原始内核文件,未压缩。 zImage 是vmlinux经过gzip压缩后文件。...于是有了initramfs根文件系统,其中包含必要设备驱动工具,bootloader加载initramfs到内存中,内核会将其挂载到根目录/,然后运行/init脚本,挂载真正磁盘根文件系统。

    3.3K20

    Linux内核调试之使用模块参数

    开场白 环境: 处理器架构:arm64 内核源码:linux-6.6.29 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope 本文主要介绍内核开发中常用模块传参手段,通过模块参数传递可以通过用户态来获取内核一些信息...一般内核开发者很喜欢使用模块传参来调试内核功能,如damon模块(数据访问监控器)。...注:都在include/linux/moduleparam.h文件中定义 2.支持参数数据类型 内核支持参数数据类型在定义module_param时候有说明: include/linux/moduleparam.h...注:这些api时候内核源码中有大量例子,直接搜索即可知道内核开发者是如何使用。...我们在实际内核开发中,如何在海量源码中获得我们所需要东西并在我们优化代码中得以使用也是也是内核开发者需要具备素养。

    23210

    Linux内核测试现状揭秘

    刚好今年9月在洛杉矶举办Linux Plumbers Conference》有一个BOF(birds of a feather)会议,Dhaval GinalSasha Levin组织了一个关于内核测试相关讨论...由于大部分BoF参会人员来自各个主要Linux发行商,所以Giani开场时候提了一个问题:“大家对于稳定内核(stable kernels)都做过了多少测试呢?...linux-next tree稳定内核以及内核主线(mainline)都是在不断地变化着,要想做到稳定测试是一件很难事情。...实验室使用Beaker并测试了大量不同内核配置,目前内核测试主要集中在三个RHEL内核两个Fedora内核上,未来他们会计划添加一些主线版本内核。...企业例子之三(Linaro) Linaro目前正在为谷歌开发一个使用内核自检(kernel self-tests,缩写kselftest)Linux测试项目(Linux Test Project,缩写

    1.6K10
    领券