Genernal Steup-→
--- Configure standard kernel features (for small systEMS) [*] Load all symbols for debugging/ kksymoops
有的系统可能还要:
[*] Include all symbols in kallsyms
当然也可以分析ELF文件以获得模块加载到内存中的地址。我们知道程序中各段的意义如下:
.text(代码段):用来存放可执行文件的操作指令,也就是说是 它是可执行程序在内存种的镜像。
.data(数据段):数据段用来存放可执行文件中已初始化全局变量,也就是存放程序静态分配的变量和全局变量。
.bss(BSS段):BSS段包含了程序中未初始化全局变量,在内存中 bss段全部置零。
.rodata(只读段):该段保存着只读数据,在进程映象中构造不可写的段。
通过在模块初始化函数中放置一下代码,也可以获得模块加载到内存中的地址,只是这样要麻烦一些。
2.3 应用程序的调试
到了应用程序调试的阶段,仿真器就可以“功成身退”了,剩下的调试任务就由LinuxScope调试器来独自完成。此时只要在目标系统中启动“gdbserver”,调试应用程序非常的方便。
3 结语
面向行业,应用和设备的 嵌入式 Linux工具软件和嵌入式Linux操作系统平台是未来发展的必然趋势。跟踪Linux社区的发展,符合标准,遵循开放是大势所趋,人心所向,嵌入式Linux也不例外。Linux调试技术的进步为Linux在嵌入式领域的应用广泛性提供了保证。本文所讲述的仿真器技术加商业调试器技术可以极大的提高开发者的效率。
参考文献:
[1] Ultimate Solution, Inc. LinuxScopeUserManual_1.0.0.2007
[2] Peter Jay Salzman. Linux内核驱动模块编程指南. 2003
[3] Karim Yaghmour. Building Embedded Linux Systems. 2003
[4] Jonathan Corbet, Alessandro Rubini, and Greg Kroah-HARTman. Linux DevICe Drivers, Third Edition. 2005