首页
学习
活动
专区
圈层
工具
发布

双机调试Linux内核

利用KGDB双机调试内核 1.1. 环境 1.2. 配置内核编译环境 2. 参考 双机调试Linux内核环境配置。...利用KGDB双机调试内核 环境 centos 7 VMware 全程使用root用户 配置内核编译环境 这种方式调试内核需要两台机器,一台用来运行Linux内核,另一台对内核进行调试。...可以开两个Linux系统的虚拟机;也可以在物理机系统是linux上面装虚拟机,然后虚拟机运行一个linux;再就是买开发板来调试内核。以下是在windows上开两个虚拟机的流程描述。...在https://www.kernel.org/ 下载想调试版本的内核代码(可以下载tarball格式)。...(我测试ttyS0不行,改成ttyS1可以了) 参考 http://blog.nsfocus.net/gdb-kgdb-debug-application/ 在VMware中用Kgdb调试linux内核

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

    用 kGDB 调试 Linux 内核

    1 简介 这个文档记录了用 kGDB 调试 Linux 内核的全过程,都是在前人工作基础上的一些总结。以下操作都是基于特定板子来进行,但是大部分都能应用于其他平台。...要使用 KGDB 来调试内核,首先需要修改 config 配置文件,打开相应的配置,配置内核启动参数,甚至修改串口驱动添加 poll 支持,然后才能通过串口远程调试内核。...(打开这个选项,默认会打开CONFIG_CONSOLE_POLL和CONFIG_MAGIC_SYSRQ) CONFIG_KGDB_KDB 加入KDB支持 CONFIG_DEBUG_KERNEL 包含驱动调试信息...CONFIG_DEBUG_INFO 使内核包含基本调试信息 CONFIG_DEBUG_RODATA=n 关闭这个,能在只读区域设置断点 2.2 可选选项 CONFIG_PANIC_TIMEOUT=5...由于大部分的板子只有一个调试串口,所以你需要把之前与串口通信的 minicom 退出来,然后在内核源码的目录下,执行以下命令: $ arm-linux-gnueabi-gcc vmlinux (gdb)

    2.3K22

    使用GDB调试Linux内核

    类似的,Linux内核开发者可以使用GDB的远程模式,与调试应用程序几乎相同的方式来调试Linux内核。...KGDB是Linux内核的源代码级调试器,你可以使用GDB作为KGDB的前端,在我们熟悉且功能强大的GDB调试界面中调试内核。...CONFIG_DEBUG_INFO 在内核和内核模块中包含调试信息,这个选项在幕后为gcc使用的编译器参数增加了-g选项。...CONFIG_GDB_SCRIPTS=y CONFIG_DEBUG_INFO_REDUCED=n CONFIG_KGDB 启用内置的内核调试器,该调试器允许进行远程调试。...写在最后 在本机搭建Linux内核调试环境的步骤有点繁杂,但使用GDB能调试内核,会成为我们学习内核的利器,进程管理、内存管理、文件系统,对源码有什么困惑就可以debug一下。 Enjoy it!

    2.9K20

    linux内核断点调试入门

    上篇文章 编译一个默认输出hello world的linux内核 中,我们已经知道如何编译一个可以自运行的linux内核,这篇文章我们来看下如何对内核进行断点调试。 1....还是先进入内核目录,执行下面的命令,确保内核代码是干净的。 $ make mrproper 2. 执行以下命令,开始对内核进行配置。 $ make nconfig 3....内核编译完毕后,执行下面命令,设置方便内核调试的一些gdb脚本(如果之前执行过该命令,则不用重复执行)。...至此,准备工作都已就绪,执行下面的命令,在qemu中运行内核,并使其处于等待调试状态。...[ 2.452502] tsc: Refined TSC clocksource calibration: 2904.013 MHz 以上就是linux内核调试的大致流程,有问题欢迎讨论。

    4K10

    【Linux内核模块】调试技巧

    一、调试前的安全须知:别让系统崩溃 内核模块调试有个特点:一旦出错可能直接导致系统死机,所以安全措施必须做好。就像拆弹专家要穿防爆服,咱们调试内核也得有防护措施。 1....:按需开启的监控摄像头 内核的动态调试(Dynamic Debug)机制可以像开关灯一样控制特定代码的日志输出,不用重新编译模块。...开启动态调试支持 首先确认内核支持动态调试(大部分发行版默认支持): grep CONFIG_DYNAMIC_DEBUG /boot/config-$(uname -r) 如果输出CONFIG_DYNAMIC_DEBUG...在代码中使用动态调试 在代码中用pr_debug或dev_dbg代替printk(KERN_DEBUG): pr_debug("数据长度: %d\n", data_len); // 动态调试支持的打印函数...五、内核调试器 kgdb:像 gdb 一样调试内核 如果 printk 和 Oops 分析还不够,就需要kgdb—— 内核版的 gdb 调试器,支持断点、单步执行等高级调试功能。

    13110

    利用vscode远程调试Linux内核

    前言 上一遍文章介绍了利用QEMU+GDB调试Linux内核。但是,有时候直接利用GDB调试查看代码还不是很方便,所以,在这么重要的场合,怎么能少的了vscode这个神器呢。...本篇文章介绍如何使用vscode远程调试内核。 本文环境: windows10 vscode ubuntu 20.04 我个人使用的是腾讯云服务器,所以就省去了安装虚拟机的过程。...这要是在Linux里,直接使用chmod,就可以修改,修改为644即可,但是windows,就稍微麻烦点。...{ "version": "0.2.0", "configurations": [ { "name": "kernel-debug",...在vscode中调试内核,和正常的在windows调试代码是一样的,侧边栏可以看到变量,监视变量,调用堆栈等,非常方便。 大功告成,以后就可以在可视化界面调试内核了!

    4.7K21

    QEMU调试Linux内核环境搭建

    一个最小可运行Linux操作系统需要内核镜像bzImage和rootfs,本文整理了其制作、安装过程,调试命令,以及如何添加共享磁盘。...1cd linux-4.14.191 2 3export ARCH=x86 4 5make x86_64_defconfig 6 7make menuconfig 在配置菜单中,启用内核debug,关闭地址随机化...内核资料直通车:最新Linux内核源码资料文档+视频资料 学习直通车:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈 配置Busybox 启动内核还需要一个具有根文件系统的磁盘镜像文件...内核函数调试 启动命令中添加-s参数与-S参数启动qemu。...在系统中执行ls命令,触发new_sync_read函数, 至此,完成了qemu环境下使用gdb进行内核函数的调试。

    4.7K20

    断点调试(debug)

    介绍:断点调试是指在程序的某一行设置一个断电,调试时,程序运行到这一行就会停住,然后可以一步步往下调试,调试过程中可以看到各个变量当前的值,如果出错的话,调试到出错的代码行就会显示错,进行分析从而找到这个...快捷键:F7(跳入:跳入方法内),F8(跳过:逐行执行代码),shift+F8(跳出:跳出方法),F9(resume,执行到下一个断点) F8案例 public class Debug01 {...过程中报错 public class Debug02 { public static void main(String[] args) { int[] arr = {1, 2,...查看方法源码 import java.util.Arrays; public class Debug03 { public static void main(String[] args) {...过程中,动态的下断点  按下F9键,会直接跳转到下一个断点处,并且将第二个断点前的语句全部执行 也可以不断地继续去动态增加断点,进行测试 DebugExercise 使用断点调试,追踪下一个对象创建的过程

    88620

    Debug 远程调试

    一、什么是debug远程调试? 二、远程调试的条件是? 三、为什么用到debug远程调试,实际应用有那些? 四、如何使用debug远程调试? 什么是debug远程调试?...大家都知道debug本地调试,就是再自己的代码上打一个断点,然后debug运行就可以本地调试,那么远程调试就是,代码再虚拟机上运行。自己可以看到虚拟机上运行的一些变量值等。 远程调试的条件是?...为什么用到debug远程调试,实际应用有那些? 比如你发布了代码,但是结果跟你本地结果不一致,那么 如果可以直接再虚拟机上进行调试,哪效果肯定杠杠的。。一般实际应用,比如我就是再 接口调试。...如何使用debug远程调试? 点击项目右键---debug as ---configuration ? 右键 new ? name: 名字。随便取 project: 就是你要调试的项目是那个一。...双击“startup-debug.bat”,用debug模式启动tomcat。在tomcat的后台可以看到tomcat已经在9000端口进行监听 这样就可以了 有兴趣的同学可以去试试

    1.8K20

    【Linux 内核 | 操作系统 | 内核编译】内核编译中与锁调试相关的设置有哪一些?内核 Debug 选项中 LockDep 和其他锁调试选项详解

    ​问题描述: 我在看内核锁调试的信息时,看到了一些内核编译参数相关的设置,开启这些信息可以帮助我们在测试环境中调试锁的竞争情况,可以详细的打印出来一些线程持有锁,一些线程争抢锁的信息。...未启用的后果:内核无法在运行时发现锁的非法使用顺序(如可能引发死锁的锁获取路径)。 ​b....特定锁类型的调试 bash # CONFIG_DEBUG_RT_MUTEXES is not set # 实时互斥锁(RT Mutex)调试 # CONFIG_DEBUG_SPINLOCK is...not set # 自旋锁调试 # CONFIG_DEBUG_MUTEXES is not set # 互斥锁调试 # CONFIG_DEBUG_WW_MUTEX_SLOWPATH...针对性调试选项(按需启用)​ bash CONFIG_DEBUG_SPINLOCK=y # 调试自旋锁(常见于多核竞争场景) CONFIG_DEBUG_MUTEXES=y # 调试互斥锁

    21000

    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的时候内核源码中有大量的例子,直接搜索即可知道内核开发者是如何使用。.../init.h> #include linux/module.h> #include linux/kernel.h> /********** case 1: base type *********

    90210
    领券