vmware串口调试

在调试内核态程序时,发现内核里面的打印信息在默认的情况下只能在控制台输出,由于控制台能看到得信息有限,这就导致不能看到很多有用的调试信息。经过试验,可以有两种办法解决这个问题。

1.
使用串口调试。把调试信息通过串口输出,然后再用别的自己觉得好用程序读出打印信息。具体步骤如下
1)在vmare中增加一个串口。在虚拟机的.vmx文件中加入以下信息
serial0.present = "TRUE"
serial0.autodetect = "TRUE"
serial0.tryNoRxLoss = "TRUE"
serial0.fileType = "pipe"
serial0.fileName = "//./pipe/com_1"
(2)
修改linux/boot/grub/menu.lst信息与/etc/inittab
/boot/grub/menu.lst
的示范:

serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.18)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18 ro root=LABEL=/ console=tty0 console=ttyS0,115200n8
initrd /boot/initrd-2.6.18.img

/etc/inittab中加入以下行

T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100

3)下载Named Pipe TCP Proxy,并安装 。见附件
4)打开Named Pipe TCP ProxyEdit->New,然后输入vmware设置的管道名称,在这里是//./pipe/com_1,设置成端口自己随便取,别冲突就可以,这里以2001为例。
5)然后打开cmd,输入telnet 127.0.0.12001。可以看到attaching consol,wait...然后输入系统信息。

如果遇到printk打印不出来时,可能是系统的console_loglevel设置不对。查看/proc/sys/kernel/printk,如果里面的信息不是64 1 7,则要修改。修改的办法有两种(1sysctl -w kernel.printk="6 4 17" 2dmesg -n 6

设置系统启动的时候就自动修改:在/etc/rc.local最后添加dmesg –n 6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值