vmware串口调试

    技术2026-06-21  5

    在调试内核态程序时,发现内核里面的打印信息在默认的情况下只能在控制台输出,由于控制台能看到得信息有限,这就导致不能看到很多有用的调试信息。经过试验,可以有两种办法解决这个问题。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=1terminal --timeout=10 serial consoledefault=0timeout=5splashimage=(hd0,0)/boot/grub/splash.xpm.gzhiddenmenutitle 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 vt1003)下载Named Pipe TCP Proxy,并安装 。见附件4)打开Named Pipe TCP ProxyEdit->New,然后输入vmware设置的管道名称,在这里是//./pipe/com_1,设置成端口自己随便取,别冲突就可以,这里以2001为例。5)然后打开cmd,输入telnet 127.0.0.1  2001。可以看到attaching consol,wait...然后输入系统信息。如果遇到printk打印不出来时,可能是系统的console_loglevel设置不对。查看/proc/sys/kernel/printk,如果里面的信息不是6  4 1 7,则要修改。修改的办法有两种(1sysctl   -w   kernel.printk="6   4   1  7" 2dmesg -n 6

     

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

    最新回复(0)