- 论坛徽章:
- 0
|
原帖由 mirnshi 于 2006-8-29 19:59 发表
将你详细步骤写出来,包括涉及到的配置文件之类的。gdb远程调试很简单的,也许是你哪个步骤或者文件有问题。
调试机:
提供调试环境,包含源代码及包含全部符号表的内核kernel.debug。
目标机:
运行脱去了调试信息的内核kernel。
搭建交叉调试环境的方法如下:
1. 在调试机上,转到/usr/src/sys/i386/conf目录,打开配置文件GENERIC,在其中添加如下内容:
makeoptions DEBUG=-g
options DDB
device sio0 at isa? port IO_COM1 flags 0x80 irq 4
2. config –g GENERIC
3. cd ../../compile/GENERIC/,也就是转到编译目录/usr/src/sys/compile/GENERIC
4. make depend && make
5. 前面编译出两个文件kernel和kernel.debug,将kernel.debug通过ftp传输到目标机
6. 在目标机,执行下述命令:
cp kernel.debug xxx
strip –x xxx
cp xxx /boot/xxx
7. 重启目标机,在出现菜单“F1 FreeBSD”的时候,输入:
boot –d /boot/xxx
此时显示器上输出如下信息:
WARNING:loader( metadata is missing!
Debugger(“Boot flags requested debugger”);
Stopped at 0x0342538: movb $0,0xc45ae20
db>
8. 输入gdb
db>gdb
Next trap will enter GDB remote protocal mode
db>
9. 在调试机上输入gdb –k kernel.debug
10. kgdb界面里输入remote target /dev/cuaa0
(kgdb)remote target /dev/cuaa0
(kdgb)Remote device not open
11. 在目标机db命令行输入单步命令s
db>s
12. 调试机上输入emote target /dev/cuaa0,仍然提示Remote device not open!
[ 本帖最后由 ktrudger 于 2006-8-30 10:30 编辑 ] |
|