欢迎来到天天文库
浏览记录
ID:21505636
大小:56.00 KB
页数:4页
时间:2018-10-22
《在 freebsd 中使用串行通信进行远程内核调试》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、在FreeBSD中使用串行通信进行远程内核调试 探索在不影响系统性能的情况下,如何远程调试正在目标计算机上运行的FreeBSD内核。本文讨论如何使用串行通信端口设置调试环境、如何编译经过修改的内核代码、如何进行调试,并介绍了一些故障诊断提示。 引言 FreeBSD是从BSD衍生而来的高级操作系统,BSD则是加利福尼亚大学伯克力分校开发的UNIX®版本。它提供了很高的性能,与其他系统的兼容性更强,并且需要的系统管理更少。FreeBSD包含了内核级的状态式(Stateful)IP防火墙以及许多其他服务,如IP代理网关、访问控制列表、强制访问控制、基于Jail的虚拟主
2、机以及加密保护的存储。 在开发内核代码或运行开发内核时,偶尔会发生内核崩溃。重要的是诊断核心转储以便提取有用的信息。如果尝试使用同一台开发计算机来调试此核心转储,则可能影响系统的性能。每次只能调试一个核心转储。要想高效地调试内核的核心转储,最好是在开发计算机和目标计算机之间建立远程调试会话,然后使用串行通信远程调试内核。 kgdb实用程序是基于gdb的调试器,允许调试内核核心文件。FreeBSD5.3及更高版本提供了kgdb实用程序。如果您有早期版本的FreeBSD,那么仍然可以使用gdb-k来读取核心转储文件。kgdb可帮助在内核代码中放置断点,这样您就可以逐步通过断点
3、来观察变量。 本文介绍如何使用串行通信端口来设置调试环境、如何编译经过修改的内核代码,以及如何开始内核调试。还介绍了一些故障诊断提示。 设置调试环境 要设置进行FreeBSD内核调试的远程调试环境,您需要两台计算机:一台目标计算机和一台开发计算机。目标计算机上运行需要调试的新内核映像。开发计算机用于调试目标计算机上运行的内核。为了获得更好的性能,您可以使用配置较好的计算机作为开发计算机。 零调制解调器电缆(Nullmodemcable) 零调制解调器(Nullmodem)是一种使用RS-232串行电缆连接两台计算机的通信方式。原始RS-232标准只定义了使用调制解调
4、器连接计算机的方式。使用零调制解调器连接时,发送线和接收线要交叉连接。根据使用目的而定,有时需要交叉连接一个或多个握手线。有多种连接方式可供选择,因为标准中并未涵盖零调制解调器连接。 如果将零调制解调器电缆连接到串行端口,与使用调制解调器时的速率(9600bps)相比,调试器能够以它当前的最高速率(19200bps)运行。通常认为这种配置比使用调制解调器更可靠,其原因在于: 零调制解调器电缆是一种允许在两个串行端口之间发送数据的串行电缆。通常,将串行端口与串行设备连接。在本例中,必须配置目标计算机以接受串行端口到串行端口的连接。有一点很重要,那就是要使用零调制解调器电缆,
5、如果您使用普通的串行电缆,目标计算机则期望与串行设备通信,而不是与另一个串行端口通信,这样您就无法调试该计算机。 当您使用零调制解调器电缆在两台计算机之间建立直接串行连接时,您的电缆必须按下面清单1中显示的方式连接。 清单1.25针零调制解调器电缆 2 3 TransmitData3 2 ReceiveData4 5 RequesttoSend5 4 CleartoSend6 20 DataSetReadyandCarrierDetect7 7 SignalGround20 6 DataTerminalReady 修改内核文件 需要修改FreeBSD内核中的特定内
6、核配置文件,以使其了解使用串行通信的远程内核调试环境。首先,备份原始的/usr/src/sys/i386/conf/GENERIC配置文件,如下所示:$cd/usr/src/sys/i386/conf/$cpGENERICMYKERNEL 在开发计算机上,使用您偏爱的编辑器(vi或emacs)打开该配置文件:$emacs/usr/src/sys/i386/conf/MYKERNEL 添加如下所示的几行代码:optionsddb#Thislineakeoptionsdebug=-g#Thislineationintotheneage,achine. 为了激活串行端口通信以
7、进行内核调试,您需要修改同一个内核配置文件。在/usr/src/sys/i386/conf/MYKERNEL文件中,查找sio0单词,它指向计算机上的1串行端口。设置0x80端口标志,如下所示:devicesio0atisa?portIO_1flags0x80 编译FreeBSD内核 如果已经更改了内核配置文件,就必须编译内核,以便可以调试新内核映像。 使用下列命令配置内核:572$cd/usr/src/sys/i386/conf/$config-gMYKERNEL -g选项将调试信息添加到内核
此文档下载收益归作者所有