首页 > 其他分享 >kdb与Kgdb实践

kdb与Kgdb实践

时间:2023-05-25 17:34:12浏览次数:40  
标签:Kgdb guest 主机 minicom 实践 dev gdb kdb my

准备工作

两台一样的VMware 的centos7的虚拟机。

Host 主机上安装minicom. gdb

Host vmare的增加管道类型的串口图:

kdb与Kgdb实践_linux

guest vmare 上增加管道类型的串口图

kdb与Kgdb实践_linux_02

准备要调试的OK和源代码 文件

其中OK与源代码文件要在两台host与guest两台主机上同时使用,我们使用虚拟机里的共享目录。

本例使用my-dev.ko已提前编译好,并gcc 使用-g参数,增加调试信息

创建调试环境

以下内容请严格按顺序一步步操作。

在guest中:

insmod my-dev.ko  //加载被调试的驱动模块。
echo ttyS2 > /sys/module/kgdboc/parameters/kgdboc  //告诉内核ttyS2作为kgdb的输出串口。
//取出guest主机上三my-dev.ko内存中的关键信息,这个在host主机gdb中要使用。
[root@localhost my-misc-dev]# cat /sys/module/my_dev/sections/.data
0xffffffffc0aa4000
[root@localhost my-misc-dev]# cat /sys/module/my_dev/sections/.bss 
0xffffffffc0aa4300
[root@localhost my-misc-dev]# cat /sys/module/my_dev/sections/.text 
0xffffffffc0aa2000

在host主机中做好侦听串口的工作。

//由于本例中Host主机与guest的主机的管道串口在系统中名称均为ttyS2.但在实际使用中这个名称可

能有不同。minicom的具体用法请自行百度。

minicom -D /dev/ttyS2

kdb与Kgdb实践_linux_03

如果offline表示minicom未进行接管,或是与guest未正常通信。

在guest中,主动暂停内核,等待调试器的操作.

echo g > /proc/sysrq-trigger //主动暂停内核,等待调试器的操作。输入此命令行,guest机进入“死机”状态。同时host主机minicom有一行打印

在host主机,查看minicom中的打印内容,同时回车,有[0]kdb>的提示符。

Entering kdb (current=0xffffa01cfa696eb0, pid 2892) on processor 0 due to Keyboa[0]kdb>

kdb与Kgdb实践_linux_04

在kdb>中提示下输入kgdb,表示等待进入gdb.

在host主机,打开gdb,在进入gdb之前增加一个配置文件 test.gdb

cat test.gdb //文件内容如下:其中文件主中.text .bss .data的参数都是guest主机上中my_dev.ko在内存中位置。
add-symbol-file //mnt/hgfs/Linux-test/gitee-centos/linux-kernel-klog/my-misc-dev/my-dev.ko 0xffffffffc0aa2000 -s .bss 0xffffffffc0aa4300 -s .data 0xffffffffc0aa4000

使用gdb命令进入

gdb /boot/vmlinuz-3.10.0-862.el7.x86_64

配置gdb远程调试参数

(gdb) set remotebaud 115200
(gdb) target remote /dev/ttyS2
(gdb) source /mnt/hgfs/Linux-test/gitee-centos/linux-kernel-klog/my-misc-dev/test.gdb

kdb与Kgdb实践_linux_05

开始gdb guest的内核

由于gdb的打开目录在my_dev.ko的编译目录,可以使用list my_ tab键 进行联想。

kdb与Kgdb实践_linux_06


可以list函数

kdb与Kgdb实践_linux_07

continue以后,无法使用ctrl+c来暂停guest内核的运行。

kdb与Kgdb实践_linux_08


再一次暂停guest内核的运行,需要在guest的shell中

echo g > /proc/sysrq-trigger

host机上的gdb状态

kdb与Kgdb实践_linux_09

简单的Info b与b的断点命令

kdb与Kgdb实践_linux_10

运行后进入断点,以及bt查看栈信息。

kdb与Kgdb实践_linux_11



http://blog.dynofu.me/post/2015/10/08/linux-live-debugging-with-kgdb-vmware-workstion.html#virtual-serial-port

https://www.kernel.org/doc/html/v4.18/dev-tools/kgdb.html

https://www.kernel.org/doc/html/v4.18/dev-tools/kgdb.html#running-kdb-commands-from-gdb

http://oliveryang.net/2015/08/using-kgdb-debug-linux-kernel-1/

标签:Kgdb,guest,主机,minicom,实践,dev,gdb,kdb,my
From: https://blog.51cto.com/yaxinsn/6350353

相关文章

  • FLEX实践—模拟Application与Module间的事件监听
         一直找到如何在Application中发出一个事件,让Module捕获该事件并做出相应的动作。但是一直没找到,于是模拟了一个这样的情景。 WatchTest.mxml<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"......
  • FLEX实践—动态切换应用皮肤
        在同一个Application中动态切换主题,这里采用的是动态引用不同的CSS文件。     具体步骤如下:    1)创建CSS文件   skyTheme.css/*CSSfile*/.backgroudSkin{backgroundColor:#89caec;fontWeight:bold;fontSize:12;}.applicationBar{......
  • 前端微服务无界实践
    一、前言随着项目的发展,前端SPA应用的规模不断加大、业务代码耦合、编译慢,导致日常的维护难度日益增加。同时前端技术的发展迅猛,导致功能扩展吃力,重构成本高,稳定性低。因此前端微服务应运而生。前端微服务优势1.复杂度可控:业务模块解耦,避免代码过大,保持较低的复杂度,便于维......
  • Flex实践——Parallel Practice
        前几次在学习Flex中的一些基本控件的使用,还顺便学了一小点ActionScript的应用,今天要学些What?来看看一些组合效果的应用吧,下面的实践将简单介绍把渐变和移动两种效果同时运用在一个组件上。    ( 引:Flex提供将超过一种的多种效果组合起来的能力。你可以使用<mx:P......
  • Flex实践—So beautiful webpage.....
        前不久听说应该开始学习Flex,因为我的骨子里还是懒的,所以一直不想装这种专业软件,其实装软件配环境对我来说一直是比写代码还痛苦的事,今天下午终于赖不住无聊,下了个FlexBuilder3,装了一下,找了个注册码,开始感受它的神奇。。。。    让我惊讶的是Flex设计出来的页面效......
  • Flex实践——States Practice
      上一次用组合效果完成了一些变化,这一次,来学习一下如何实现当单击一个按钮时改变页面状态(包括布局,内容,颜色等)引:你可以在AdobeFlex中使用视图状态和变换来创建更为丰富、更为互动性的用户经历。举个例子,你可以使用视图状态去创建用户界面,它可以根据用户所执行的任务来改变它的......
  • Flex实践—Simple Copy Panel
       上一次介绍了ActionScript函数的简单应用,这一次,来讲点简单的copy功能的实现吧。。。   下面的例子将完成对输入内容的拷贝和剪切。。。。    首先,和第一次介绍的步骤一样,新建一个FlexApplication   然后,拖控件,给必要的控件填写ID名以下的例子中用到的需要命名......
  • ICML 2023 | 轻量级视觉Transformer (ViT) 的预训练实践手册
    前言 本文介绍一下最近被ICML2023接收的文章:ACloserLookatSelf-SupervisedLightweightVisionTransformers.文章聚焦在轻量级ViT的预训练上,相当于为相关方向的研究提供了一个benchmark,相关的代码与模型也都会开源,方便后续大家在这一方向上继续探索。文章的研究也打破......
  • 前端微服务无界实践 | 京东云技术团队
    一、前言随着项目的发展,前端SPA应用的规模不断加大、业务代码耦合、编译慢,导致日常的维护难度日益增加。同时前端技术的发展迅猛,导致功能扩展吃力,重构成本高,稳定性低。因此前端微服务应运而生。前端微服务优势1.复杂度可控:业务模块解耦,避免代码过大,保持较低的复杂度,便于维护与......
  • 万字长文详述ClickHouse在京喜达实时数据的探索与实践
    1前言京喜达技术部在社区团购场景下采用JDQ+Flink+Elasticsearch架构来打造实时数据报表。随着业务的发展Elasticsearch开始暴露出一些弊端,不适合大批量的数据查询,高频次深度分页导出导致ES宕机、不能精确去重统计,多个字段聚合计算时性能下降明显。所以引入ClickHouse来处理这......