1. 开启虚拟机,虚拟机运行到 kgdb: Waiting for connection from remote gdb

2. 在Host机上运行: socat tcp-listen:8888 /tmp/vbox2, 其中/tmp/vbox2为管道文件,它是目标机串口的重定向目的文件,socat将这个管道文件又重定向到tcp socket的8888端口。

3. 开启一个新的虚拟终端,cd path/to/kernel/source/tree, 然后执行gdb ./vmlinux

输出

GNU gdb 6.8-debian

Copyright (C) 2008 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.  Type "show copying"

and "show warranty" for details.

This GDB was configured as "i486-linux-gnu"...

(gdb) set-remote

set remote baud rate to 115200c/s

set remote target to local tcp socket

kgdb_breakpoint () at kernel/kgdb.c:1721

1721        wmb(); /* Sync point after breakpoint */

(gdb) c

Continuing.

目标机会一直启动,直到提示输入用户名密码。

4. 进入目标机,输入用户名密码(推荐使用字符界面下的root用户),输入g命令,目标机被断下,控制移交到Host机中的gdb中。(目标机root的用户目录中的.bashrc中添加一行alias g='echo g>/proc/sysrq-trigger')

5. 在Host机中的gdb中

(gdb) set-mod-break

set breakpoint in system module init function

Breakpoint 1 at 0xc014bac5: file kernel/module.c, line 2288.

(gdb) c

Continuing.

6. 在目标机中

insmod klogger2.ko

目标机再次断下,控制权移交Host机中的gdb

7. 在Host机中的gdb中

[New Thread 4693]

[Switching to Thread 4693]

Breakpoint 1, sys_init_module (umod=0x0, len=0, uargs=0x0)

at kernel/module.c:2288

2288        if (mod->init != NULL)

(gdb) print-mod-segment

Name:.note.gnu.build-id Address:0xdf977058

Name:.text Address:0xdf975000

Name:.rodata Address:0xdf977080

Name:.rodata.str1.4 Address:0xdf9774b4

Name:.rodata.str1.1 Address:0xdf977522

Name:.parainstructions Address:0xdf977a00

Name:.data Address:0xdf978440

Name:.gnu.linkonce.this_module Address:0xdf978480

Name:.bss Address:0xdf978a00

Name:.symtab Address:0xdf977a08

Name:.strtab Address:0xdf978078

(gdb) add-symbol-file /home/done/programs/linux-kernel/vlogger/klogger2.ko 0xdf975000 -s .data 0xdf978440 -s .bss 0xdf978a00

add symbol table from file "/home/done/programs/linux-kernel/vlogger/klogger2.ko" at

.text_addr = 0xdf975000

.data_addr = 0xdf978440

.bss_addr = 0xdf978a00

(y or n) y

Reading symbols from /home/done/programs/linux-kernel/vlogger/klogger2.ko...done.

(gdb) b hook_init

Breakpoint 2 at 0xdf976d19: file /home/done/programs/linux-kernel/vlogger/hook.c, line 255.

(gdb)

你可以调试自己些的LKM模块了

附gdb的初始化配置文件~/.gdbinit

linux内核模块调试信息,linux 内核模块调试相关推荐

  1. linux查看显示器名称命令,linux 查看显示器信息Linux下查看硬件信息命令大全

    /proc 虚拟的目录,是系统内存的映射.可直接访问这个目录来获取系统信息.其中也包含下面的信息: 主机CPU信息:cpuinfo 主机DMA通道信息:dma 文件系统信息:filesystems 主 ...

  2. 无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件...

    1.问题症状 已经处于Debug模式,运行时完全正常,但是一调试就出现对话框,显示出错信息:"无法找到"XXX.exe"的调试信息,或者调试信息不匹配.未使用调试信息生成 ...

  3. VS 2005 不能调试无法找到调试信息 未使用调试信息生成二进制文件

    VC_关于未使用调试信息生成二进制文件的错误 2011-05-08 18:00 今天VS出个了问题给我闹心坏了,提示出现:Cannot find or open the PDB file 弄了半天终于 ...

  4. linux查看显卡核心数,linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 | 帮助信息-动天数据...

    linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 作者:dthost | 时间:2015-09-30 | 8,325 次阅读 linux服务器 ...

  5. 错误“无法找到XXX.exe的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件“的解决方案

    Debug模式,运行时完全正常,但是一调试就出现对话框,显示出错信息:  "无法找到"XXX.exe"的调试信息,或者调试信息不匹配.未使用调试信息生成二进制文件.&qu ...

  6. 获取linux命令硬盘信息,Linux下如何获取磁盘信息

    HUX布斯 1,Linux下可以在/proc/cpuinfo中看到每个cpu的详细信息.但是对于双核的cpu,在cpuinfo中会看到两个cpu.常常会让人误以为是两个单核的cpu.其实应该通过Phy ...

  7. linux删除配置信息,linux 配置信息

    # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostn ...

  8. linux显示今日信息,linux lsmod命令详解

    lsmod  (list modules) 语 法:lsmod 功          能: lsmod 命令:是一个小程序,用来显示文件.proc/modules的信息,也就是显示当前内核模块装载的模 ...

  9. VS2013出现“无法找到“xxx.exe”的调试信息,或者调试信息不匹配”错误解决方案

    错误信息如下所示: 解决办法: 选择项目属性,依次序进行如下操作. 1.选择 配置属性->链接器->调试->生成调试信息 改为 是 一般问题都是出现在这个地方,修改完了可以尝试运行, ...

  10. 隐藏linux操作系统版本信息,linux centos 如何查看操作系统版本信息?

    本文介绍常用的四种查看linux下查看系统版本信息的方法: 一.uname -a [app@VM_11_211_centos ~]$ uname -a Linux VM_11_211_centos 2 ...

最新文章

  1. Sparsity稀疏编码(三)
  2. Mysql中字段类型之时间戳大坑
  3. 「后端小伙伴来学前端了」关于 Vue中 Slot 插槽的使用,实用且也是组件中必会的一个知识,另外也可以实现父子组件之间通信
  4. tmeminifile and tinifile
  5. Web 应用服务器端渲染入门指南
  6. linux进程通信发送方式,Linux服务器编程——Linux系统编程之进程通信
  7. Java String compareTo()方法与示例
  8. 两大微服务框架dubbo和spring cloud对比
  9. 什么题材的短视频最吸引人观看?
  10. 2018-2019 ACM-ICPC, Asia Jiaozuo Regional Contest题解
  11. 大数据将会带来什么机遇
  12. Java中的package、import、import static
  13. 产品经理——跨境电商订单跟进邮件模板
  14. Windows电脑如何访问小米路由器的移动硬盘
  15. 巨潮网怎么下载年报_如何下载上市公司的年度报告
  16. Java入门(六)MySql 数据库
  17. docker 进入容器方法
  18. Google Earth Engine-06(GEE操作方法)
  19. 论坛发文求助看法一二。
  20. 2023年MathorCup数模A题赛题

热门文章

  1. 学Java是自学好还是去培训机构学好?
  2. sizeof()来求一个类的大小
  3. 旗舰版ndows7bios设置,联想扬天m6201k改win7 (详细BIOS设置教程及USB驱动)
  4. 假如你拥有一家线上网店,现在需要你策划一个以线上为主的周年庆活动方案,并说一下业务逻辑和流程的描述及理由。(如果包含产品或活动页面相关环节,是否能顺便说说相关产品逻辑描述、逻辑流程和页面交互)
  5. 软件本地化可能会用到的工具
  6. Flask模板语法与继承
  7. 国际贸易术语解释通则(FOB 船上交货(……指定装运港))
  8. Pandas索引基本操作
  9. Linux网络编程【socket编程】
  10. 每天一道大厂SQL题【Day11】微众银行真题实战(一)