| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
3.2.2 配置
*在developer机器上
在内核源码目录下编辑一文件.gdbinit(该文件用以对gdb进行初始化),内容如下: 网管联盟bitsCN_com
#vi .gdbinit
define rmt
set remotebaud 115200
target remote /dev/ttyS0
end
# 网管下载dl.bitscn.com
以上在.gdbinit中定义了一个宏rmt,该宏主要是设置使用的串口号和速率
网管联盟bitsCN@com
*在target机器上
编辑/etc/grub.conf文件,加入以下行: 网管朋友网www_bitscn_net
#vi /etc/grub.conf
title Red Hat Linux (2.4.23-kgdb)
root (hd0,0)
kernel /boot/vmlinuz-2.4.23-kgdb ro root=/dev/hda1
#
中国网管联盟bitsCN.com
在root目录下建立一个脚本文件debugkernel,内容如下:
#vi debug
#!/bin/bash
gdbstart -s 115200 -t /dev/ttyS1 <<EOF
EOF
#chmod +x debugkernel
网管网www_bitscn_com
这个脚本主要是调用gdbstart程序设置target机上使用的串口及其速率,并使内核处于调试状态
网管有家bitscn.net
3.3 开始调试
网管u家u.bitsCN.com
target上的内核或内核模块处于调试状态时,可以查看其变量、设置断点、查看堆栈等,并且是源码级的调试,和用gdb调试用户程序一样 中国网管联盟bitsCN.com
3.3.1 内核启动后调试 网管联盟bitsCN@com
*在target机器上 网管u家u.bitsCN.com
重启系统,选择以 2.4.23-kgdb内核启动,启动完成后运行debugkenel,这时内核将停止运行,在控制台屏幕上显示信息,并等待来自developer的串口连接 网管朋友网www_bitscn_net
#./debug
About to activate GDB stub in the kernel on /dev/ttyS1
Waiting for connection from remote gdb...
中国网管论坛bbs.bitsCN.com
*在developer机器上 中国网管联盟bitsCN.com
#cd /home/liangjian/linux-2.4.23
# 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"... 网管bitscn_com
执行rmt宏
网管朋友网www_bitscn_net
(gdb) rmt
breakpoint () at kgdbstub.c:1005
1005 atomic_set(&kgdb_setting_breakpoint, 0);
网管联盟bitsCN_com
这时target上的内核处于调试状态,可以查看其变量、设置断点、查看堆栈等,和用gdb调试用户程序一样
网管联盟bitsCN@com
查看堆栈 中国网管联盟bitsCN.com
(gdb) bt
#0 breakpoint () at kgdbstub.c:1005
#1 0xc0387f48 in init_task_union ()
#2 0xc01bc867 in gdb_interrupt (irq=3, dev_id=0x0, regs=0xc0387f98) at
gdbserial.c:158
#3 0xc010937b in handle_IRQ_event (irq=3, regs=0xc0387f98, action=0xce5a9860)
at irq.c:452
#4 0xc0109597 in do_IRQ (regs=
{ebx = -1072671776, ecx = -1, edx = -1070047232, esi = -1070047232, edi
= -1070047232, ebp = -1070039092, eax = 0, xds
= -1070071784, xes = -1070071784, orig_eax = -253, eip = -1072671729, xcs =
16, eflags = 582, esp = -1070039072, xss = -1072671582}) at irq.c:639
#5 0xc010c0e8 in call_do_IRQ () 网管u家u.bitsCN.com
查看jiffies变量的值
网管网www_bitscn_com
(gdb) p jiffies
$1 = 76153 网管u家u.bitscn@com
如果想让target上的内核继续运行,执行continue命令
(gdb) continue
Continuing. 网管网www.bitscn.com
|
0
|
评论加载中…