如何建立加载内核模块的调试信息(像内核的vmlinux- uname -r
的.debug?),同时我们建立了一个模块是否产生,如果是的话它会位于?调试,信息
Q
调试,信息
6
A
回答
5
假设你已经建立了CONFIG_DEBUG_INFO内核调试符号应该已经在有问题的模块.ko文件。然而,由于模块可以动态加载到任何地址,您需要向gdb提供更多信息。
cd /sys/module/${MODNAME}/sections
cat .text .data .bss
告诉GDB有关模块时,您可以使用这个信息:
(gdb) add-symbol-file ${MODPATH} ${TEXT} -s .data ${DATA} -s .bss ${BSS}
有引导您完成这个Linux基金会网站上的教程。 Kernel and Module Debugging with GDB
4
#Modify your Makefile like this then build it
#cat /sys/module/mydriver/sections/.text -> find the address
#Then run like add-symbol-file drivers/mydrivers/mydriver.o address from above #line
obj-m += module_name.o
MY_CFLAGS += -g -DDEBUG
ccflags-y += ${MY_CFLAGS}
CC += ${MY_CFLAGS}
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
debug:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
EXTRA_CFLAGS="$(MY_CFLAGS)"
clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
+0
按照这个链接,我们不需要在模块的make文件中添加-g标志。 https://www.linux.com/learn/kernel-newbie-corner-kernel-and-module-debugging-gdb –
相关问题
- 1. 调试信息
- 2. 调试信息
- 3. GCC调试信息
- 4. DLL调试信息
- 5. gcc gdb无调试信息
- 6. 处理调试信息
- 7. libusb-1.0调试信息
- 8. Firemonkey“否调试信息”
- 9. Tomcat/Java调试信息
- 10. 检索从调试信息
- 11. 什么是调试信息?
- 12. 删除调试信息
- 13. MediaElement.js - 让调试信息
- 14. 远程调试信息?
- 15. Unity Android调试信息
- 16. 克++力调试信息
- 17. VS内置的DLL没有调试信息。甚至包含调试信息
- 18. 源信息是调试信息丢失此模块在VS 2012
- 19. 信息测试
- 20. cap(capistrano)输出缺少调试信息
- 21. GDB调试信息解析器/说明
- 22. 带调试信息的Eclipse RCP程序
- 23. 使用messagebox显示调试信息
- 24. 剥离Windows DLL调试信息?
- 25. 更好的调试信息与monodroid?
- 26. 已启用NSZombies,调试信息
- 27. 德尔福 - 包括TD32调试信息
- 28. 用调试信息编译OpenCL内核?
- 29. cakephp调试信息意外出现
- 30. gcc添加了哪些调试信息?
我可以设置断点和观察点吗?在那篇教程中,他们提到我们不能做更高级的设置断点等。所有这些都可以在单个系统中完成吗?否则我需要电脑? –
您不能在主机上在主机内核上设置断点。在VM中调试内核或将串行调试设置为另一台机器,以便在调试时停止/启动内核。 – stsquad