You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调试Linux Kernel 5.15.47及内核模块时遇gdb.error问题求助

解决GDB加载vmlinux时hrtimer_resolution类型错误及kernel/module.c找不到问题

问题分析

你遇到的两个核心问题:

  1. GDB加载vmlinux时触发hrtimer_resolution类型未知的错误,根源是内核自带的GDB脚本直接解析该全局变量时,GDB无法自动识别其类型
  2. kernel/module.c实际存在但GDB提示找不到,是因为GDB未关联内核源码路径

解决方案

1. 修复hrtimer_resolution类型错误

直接修改内核GDB脚本,为变量添加强制类型转换:

  • 打开内核编译目录下的scripts/gdb/linux/constants.py文件
  • 找到第10行的代码:
    LX_hrtimer_resolution = gdb.parse_and_eval("hrtimer_resolution")
    
  • 修改为(hrtimer_resolution在5.15内核中是unsigned long类型):
    LX_hrtimer_resolution = gdb.parse_and_eval("(unsigned long)hrtimer_resolution")
    
  • 保存文件后,重新在GDB中执行file vmlinux加载符号

2. 解决kernel/module.c找不到问题

在GDB中手动指定内核源码根目录:

dir /home/administrator/Kernels/built/linux-5.15.47

执行完该命令后,再重新运行lx-symbols加载模块符号即可。


额外检查项

  • 确保编译内核时开启了CONFIG_DEBUG_INFO=y和CONFIG_DEBUG_INFO_DWARF4=y(或更高版本),否则符号信息不完整会导致类似问题
  • 尽量使用GDB 9.0及以上版本,旧版本对DWARF格式的符号支持存在兼容性问题

内容的提问来源于stack exchange,提问作者PiranhaMonkey9953

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:20:29