免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ktrudger
打印 上一主题 下一主题

[FreeBSD] 求助:到底如何使用gdb搭建FreeBSD 4.11内核交叉调试环境 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2006-08-30 13:48 |只看该作者
原帖由 mirnshi 于 2006-8-30 12:32 发表
机器正常引导后,可以通过ctl-alt-esc进入db状态,
输入gdb后,可以直接step,等待远端的接入,然后在调试端,运 ...


这样也不行,调试机依然提示:
-bash-2.05b# gdb -k kernel.debug
GNU gdb 4.18 (FreeBSD)
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-unknown-freebsd"...Deprecated bfd_read called at /usr/src/gnu/usr.bin/binutils/gdb/../../../../contrib/gdb/gdb/dbxread.c line 2627 in elfstab_build_psymtabs
Deprecated bfd_read called at /usr/src/gnu/usr.bin/binutils/gdb/../../../../contrib/gdb/gdb/dbxread.c line 933 in fill_symbuf

(kgdb) remote target /dev/cuaa0
Remote device not open
(kgdb)

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
22 [报告]
发表于 2006-08-30 13:48 |只看该作者
dmesg | grep sio0

论坛徽章:
0
23 [报告]
发表于 2006-08-30 13:55 |只看该作者
原帖由 mirnshi 于 2006-8-30 13:48 发表
dmesg | grep sio0

我看一个叫《Debugging Kernel Problems》的步骤,把flags由0x80改为0x90了,现在设了0x90表识(0x90 = 0x80 | 0x10),现在看到的结果如下,呆会我在改回0x80看看:
-bash-2.05b# dmesg | grep sio0
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio0: gdb debugging port
sio0 at port 0x3f8-0x3ff irq 4 flags 0x90 on isa0
sio0: type 16550A
sio0: gdb debugging port
sio0 at port 0x3f8-0x3ff irq 4 flags 0x90 on isa0
sio0: type 16550A
-bash-2.05b#

论坛徽章:
0
24 [报告]
发表于 2006-08-31 09:06 |只看该作者
-bash-2.05b# dmesg | grep sio0
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio0: gdb debugging port
sio0 at port 0x3f8-0x3ff irq 4 flags 0x90 on isa0
sio0: type 16550A
sio0: gdb debugging port
sio0 at port 0x3f8-0x3ff irq 4 flags 0x90 on isa0
sio0: type 16550A
sio0: gdb debugging port
sio0 at port 0x3f8-0x3ff irq 4 flags 0x80 on isa0
sio0: type 16550A

可是还是不行啊,郁闷死了!

论坛徽章:
0
25 [报告]
发表于 2006-08-31 09:07 |只看该作者
我调试机上的信息如下:
-bash-2.05b# dmesg | grep sio0
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
26 [报告]
发表于 2006-08-31 09:23 |只看该作者
调试机你裁减过吗?一般建议使用GENERIC,因为如果对系统不是非常了解的话,会出现一些问题。
或者你将串口1设置成了控制台?
问题可能还在你的调试机上,被调试机只要flags设置了,可以接收gdb指令。

论坛徽章:
0
27 [报告]
发表于 2006-08-31 09:36 |只看该作者
原帖由 mirnshi 于 2006-8-31 09:23 发表
调试机你裁减过吗?一般建议使用GENERIC,因为如果对系统不是非常了解的话,会出现一些问题。
或者你将串口1设置成了控制台?
问题可能还在你的调试机上,被调试机只要flags设置了,可以接收gdb指令。


我就是使用的GENERIC,另外我没有设置过调试机的串口。

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
28 [报告]
发表于 2006-08-31 10:36 |只看该作者
无法知道你是否改动了其他的一些东西。
在赛扬的机器上一样可以跑vmware的,建议你在vmware中构建原始环境,可以将不必要的诸如软驱之类的都清掉,只保留串口1,装好1系统后,然后将编译好的kernel.debug传到系统中。接着复制出一份来,原来的当做调试机,复制的当做被调试机,将2个串口对应好。在被调试机上使用ln命令做个硬连接,不用strip,没啥用处的。2个系统起来,占用host的内存不过100多M,很小的。我通常都把bsd系统的内存限制在32一下,甚至更小。安装系统时,可以最小化安装,硬盘不到150M就够用了。作的过程中,在不确切清楚地情况下,不要随意更改某些配置文件(我觉得你目前的问题最大的可能性,就是更改一些东西,而你忘记了)。
顺便,贴一下我常用的调试内核配置文件,如果你需要其他的必须设备,可以添加上。我的编译方式是:
# config -g -d /GDB GDB;cd /GDB;make depend;make -j 3

  1. machine         i386
  2. cpu             I686_CPU
  3. ident           GDB
  4. maxusers        0

  5. makeoptions     DEBUG=-g                #Build kernel with gdb(1) debug symbols
  6. options         DDB

  7. options         MATH_EMULATE            #Support for x87 emulation
  8. options         INET                    #InterNETworking
  9. options         FFS                     #Berkeley Fast Filesystem
  10. options         FFS_ROOT                #FFS usable as root device [keep this!]
  11. options         PROCFS                  #Process filesystem
  12. options         COMPAT_43               #Compatible with BSD 4.3 [KEEP THIS!]
  13. options         NO_SWAPPING

  14. device          isa
  15. device          pci

  16. device          ata
  17. device          atadisk                 # ATA disk drives

  18. device          atkbdc0 at isa? port IO_KBD
  19. device          atkbd0  at atkbdc? irq 1 flags 0x1

  20. device          vga0    at isa?

  21. device          sc0     at isa? flags 0x100

  22. device          npx0    at nexus? port IO_NPX irq 13

  23. # Serial (COM) ports
  24. device          sio0    at isa? port IO_COM1 flags 0x80 irq 4

  25. device          miibus          # MII bus support
  26. device          lnc0    at isa? disable port 0x280 irq 10 drq 0

  27. pseudo-device   loop            # Network loopback
  28. pseudo-device   ether           # Ethernet support
  29. pseudo-device   pty             # Pseudo-ttys (telnet etc)

  30. pseudo-device   bpf             #Berkeley packet filter
复制代码

论坛徽章:
0
29 [报告]
发表于 2006-08-31 10:49 |只看该作者
原帖由 mirnshi 于 2006-8-31 10:36 发表
无法知道你是否改动了其他的一些东西。
在赛扬的机器上一样可以跑vmware的,建议你在vmware中构建原始环境,可以将不必要的诸如软驱之类的都清掉,只保留串口1,装好1系统后,然后将编译好的kernel.debug传到系统 ...

也不光是机器慢的原因,我是做网络开发的,有些网络环境用vmware模拟不了的啊。。。
我又不能给vmware接n个物理网卡


所以郁闷啊。。。

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
30 [报告]
发表于 2006-08-31 10:57 |只看该作者
好多事情都是有变通的方法的,我觉得首先你要能够在某种环境下走通gdb的远程调试,这种调试方式是非常方便的,再怎么printf,都不能了解当时的上下文。
vmware可以模拟出非常复杂的网络环境,而且即便是在单网卡上,也可以通过vlan之类的划分子网。这2天我用qemu也构建了一个复杂的网络。模拟器就是一台机器嘛
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP