linux.ChinaUnix.net
首页 | 微博 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


关于使用kgdb调试kernel2.6.26的几个问题

  首页 » 首页 » CU论坛 » Linux » 汇总贴列表 » 内核问题 »
[打印] [收藏] [本帖文本页] [推荐此主题给朋友]

大家好,首次发帖。希望能够得到大家的帮助。
最近在尝试在x86平台上用kgdb调试kernel,2.6.26已经自带kgdb,我已经编译成功安装。host也能够连接上target,但是gdb总是不能在设置的断点处正确停止。
先简单说一下我之前的配置过程。
在编译kernel时,我选择了以下几项:
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_INFO=y
禁用CONFIG_DEBUG_RODATA

在target的grub中加入“kgdboc=ttyS0,115200 kgdbwait”
target起机后停止在 Waiting for connection from remote gdb...,

在host 运行 gdb vmlinuz
(gdb) set remotebaud 115200
(gdb) target remote /dev/ttyS0
Remote debugging using /dev/ttyS0
warning: shared library handler failed to enable breakpoint
0xc045ed4e in ?? ()
(gdb) n
Cannot find bounds of current function
(gdb) bt
#0  0xc045ed4e in ?? ()
#1  0xcf02bf4c in ?? ()
#2  0xc0460244 in ?? ()
#3  0xc0732f28 in ?? ()
#4  0xc0746897 in ?? ()
#5  0x00000000 in ?? ()
(gdb) b storage_probe
Breakpoint 1 at 0xc11bf3ea: file drivers/usb/storage/usb.c, line 964.
(gdb) c

但是当我插上U盘时没有进入断点(注:我已经将关于usb storage的几个模块都built in了,插上u盘肯定要调用storage_probe)。希望大家能给我点意见。

我发现我和网上正常的应用有一处很不一样。网上有位成功应用kgdb的兄弟在host连上target后得到的下面的信息:
<root#> gdb ./vmlinux            //含调试信息的未压缩内核
(gdb) set remotebaud 38400
(gdb) target remote /dev/ttyS0
Remote debugging using /dev/ttyS0
breakpoint () at kernel/kgdb.c:1212(源代码中所在行号)
1212:atomic_set(&kgdb_setting_breakpoint, 0);
warning: shared library handler failed to enable breakpoint
(gdb)

host首次拿到控制权的时候停止的地方和我不同。

尝试了一天没成果,希望大家帮忙分析一下。多谢

[ 本帖最后由 EurekaSea 于 2008-11-18 15:51 编辑 ]



回复 #1 EurekaSea 的帖子

详细的debug信息有么
__________________________________
有问题加QQ964891849 ,遇忙邮件lvsheat@qq.comLVS-HOWTO中文翻译计划
Linux开源技术指导
提供专业Linux技术支持,Linux系统定制指导



我最近也一直再弄kgdb,我是在两台vmware之间调试的。我的虚拟机有问题编译的内核倒挂在文件系统时当掉了,但是之前的步骤是可以调试的。

首先你能确定两台机子之间的串口可以正常通信了吗?
我是用minicom测试了一下,两台机子可以相互通信。





QUOTE:
原帖由 kns1024wh 于 2008-11-17 21:44 发表
详细的debug信息有么




多谢回复,不知详细的信息需要哪些?





QUOTE:
原帖由 emmoblin 于 2008-11-17 23:51 发表
我最近也一直再弄kgdb,我是在两台vmware之间调试的。我的虚拟机有问题编译的内核倒挂在文件系统时当掉了,但是之前的步骤是可以调试的。

首先你能确定两台机子之间的串口可以正常通信了吗?
我是用minicom ...



多谢回复
我的串口确定可以正常通信了。
target机 停止在 Waiting for connection from remote gdb...,
我在host机输入(gdb) c后,target机就能正常启动了,我现在郁闷的是没有捕捉到我设定的断点:(
今天打算再重新编译一个
请问你编译的是那版的kernel?



我的问题跟你一样,比你更糟糕!

[root@CoolB3 linux-2.6.27.6]# gdb vmlinux

GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
Copyright 2003 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-redhat-linux-gnu"...

(gdb)
(gdb)
(gdb) set remotebaud 115200
(gdb) target remote /dev/ttyS0
Remote debugging using /dev/ttyS0
0xc024a423 in ?? ()
warning: shared library handler failed to enable breakpoint
(gdb) bt
#0  0xc024a423 in ?? ()
#1  0xc024a461 in ?? ()
#2  0xc024aba8 in ?? ()
#3  0xc034613d in ?? ()
#4  0xc0634353 in ?? ()
#5  0xc020102a in ?? ()
#6  0xc061891d in ?? ()
(gdb) b storage_probe
Function "storage_probe" not defined.
(gdb) n
Cannot find bounds of current function

我是用的2.6.27.6内核,很奇怪.没有函数名字,而且不能设置断点...郁闷啊,找了篇文章好象是说我KGDB版本太旧,我是用红帽子9.0自带的,我升级到最新6.4好象也一样
不过可以设置断点了.

[ 本帖最后由 Aqie 于 2008-11-18 18:17 编辑 ]



我用的是kgdb官方网站上推荐的,2.6.15内核。
然后打得补丁,是可以调试的。

2.6.26以上的内核应该不在需要打补丁了。
我现在正在试 2.6.27.6版本在ubuntu 8.10上。

希望把最新进展大家贴贴。



我的可以调试了,可以单步了。我一会设置个断点试试

用insight在ubuntu 8.10 下调试kernel

kgdb insight.JPG
2008-11-19 16:49





QUOTE:
原帖由 emmoblin 于 2008-11-19 16:49 发表
我的可以调试了,可以单步了。我一会设置个断点试试

223345



这么神奇?,我非常怀疑是.config那个地方没配置对,能把你的2.6.27.6 .config传一个上来不.最好操作步骤也来个..先谢了.在线等回复

[ 本帖最后由 Aqie 于 2008-11-19 18:05 编辑 ]



对了,你在编译2.6.27.6内核的时候有没有改Makefile 文件,我把KBUILD_CFLAGS   += -Os 改成 KBUILD_CFLAGS   += -O了


  首页 » 论坛 » 内核问题 »
Copyright © 2001-2010 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - Linux时代 - Archiver - WAP - TOP

GMT+8, 2010-03-18 11:04, Processed in 0.029661 second(s), 8 queries, Gzip enabled.