- 论坛徽章:
- 0
|
最近用KGDB调试模块总不成功,有调试过的大神给指点一下。
develop是CentOS系统(虚拟机),target是arm9的板子,用的内核是linux-3.3版本的。
我的执行步骤如下:
1.编译内核,添加KGDB的调试选项,烧到开发板
2.使用minicom作为终端,通过串口连接开发板
3.设置uboot的环境变量,添加“kgdboc=ttyS2,115200 kgdbcon”,并启动开发板
4.在develop上的linux根目录下执行arm-none-linux-gnueabi-gdb vmlinux,进入kgdb调试状态
5.在target上执行“insmod test.ko”,通过“cat /proc/module”查看模块的加载地址。(假设为0xbf000000),
然后执行“echo g > /proc/sysrq-trigger”让开发板进入kgdb中断状态
6.在develop上kgdb调试状态下执行:“set remotebaud 115200”“target remote /dev/ttyS1”连接开发板,这个时候
开发板就不能输入了,接着在develop上继续输入“add-symbol-file ./test/test.ko 0xbf000000”把加载模块符号文件,
0xbf000000为target中模块在内核中的加载地址。再接下来输入“continue”命令继续运行程序。
现在问题来了,执行完continue命令develop和target都不能进行任何输入了,死在那里了,target不能接收任何信号,
develop只能接受ctrl+c,输入ctrl+c后会出现
“while waiting for the program.
Give up (and stop debugging it)?”
输入y后target才能继续接受输入
请问大神们,为什么会出现上面的现象,哪里做错了,如果有正确的设置步骤请共享一下,在网上看了很多资料都说的不详细,
用的内核版本也比较老。感激不尽! |
|