使用串口调试Xen

栏目: 服务器 · 发布时间: 6年前

内容简介:在使用Xen的过程中,会遇到各种问题,掌握一些常见的调试技巧,对于解决问题能起到事半功倍的效果。网上一些Xen调试相关的资源:Xen hypervisor的运行信息写到了内存中,可以通过使用串口调试Xen,需要两台物理机,通过串口线连接,一台运行Xen,另一台通过串口查看输出信息。

在使用Xen的过程中,会遇到各种问题,掌握一些常见的调试技巧,对于解决问题能起到事半功倍的效果。网上一些Xen调试相关的资源:

  1. Debugging Xen
  2. Xen Serial Console
  3. Xen Debugging

Xen hypervisor的运行信息写到了内存中,可以通过 xl dmesg 命令显示,并没有写入到日志文件,所以不太方便查看。如果遇到更严重的情况,Xen在启动阶段就出错了,则无法进入Dom0运行 xl dmesg 命令查看启动信息,只能通过串口查看。

使用串口调试Xen,需要两台物理机,通过串口线连接,一台运行Xen,另一台通过串口查看输出信息。

串口线选择

串口线注意选择交叉线而不是直连线,一端用于发送,一端用于接收。

使用串口调试Xen

接口也要选对,看是公对公,母对母,还是公对母。

使用串口调试Xen

串口连通性测试

在对Xen进行串口配置之前,可以先测试下串口连通性。

查看串口信息,这里有两个串口(COM1和COM2),Linux下叫做ttyS0和ttyS1。

$ dmesg  | grep tty
console [tty0] enabled
00:03: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A

在两台设备上同时运行 minicom -s ,配置串口。

使用串口调试Xen

配好后,输入任意字符,如果在另一台设备的 minicom 中能看到对应的输出,说明串口连接正常。

Xen串口配置

在运行Xen的设备上,配置Grub开机启动项,Xen参数添加 loglvl=all guest_loglvl=all console=com2 com2=115200,8n1 ,Dom0内核参数添加 console=hvc0

如果不想在串口中错过每一条信息,可在Xen参数添加 sync_console ,强制同步串口输出,当然这只适用于调试,因为需要将所有信息从串口输出,严重影响hypervisor性能,虚拟机会特别卡。

串口调试Xen

Xen设备配置好后,在另一台设备上运行 minicom -s -C xen.log ,( -C xen.log 将串口输出同时保存在xen.log文件,方便后续查看),重启Xen设备。

Xen设备启动成功后,在串口上看到是Dom0,按6次 Ctrl-a 进入Xen。就可以看到虚拟机运行过程中,hypervisor的输出信息,可以更改Xen源码,添加更多printk()日志输出。也可以通过Xen debug keys获取相应信息,输入 h ,输出可用的kyes,输入key,输出对应信息。

(XEN) 'h' pressed -> showing installed handlers
(XEN)  key '%' (ascii '25') => trap to xendbg
(XEN)  key '*' (ascii '2a') => print all diagnostics
(XEN)  key '0' (ascii '30') => dump Dom0 registers
(XEN)  key 'A' (ascii '41') => toggle alternative key handling
(XEN)  key 'D' (ascii '44') => dump VT-x EPT tables
(XEN)  key 'H' (ascii '48') => dump heap info
(XEN)  key 'I' (ascii '49') => dump HVM irq info
(XEN)  key 'M' (ascii '4d') => dump MSI state
(XEN)  key 'N' (ascii '4e') => trigger an NMI
(XEN)  key 'Q' (ascii '51') => dump PCI devices
(XEN)  key 'R' (ascii '52') => reboot machine
(XEN)  key 'V' (ascii '56') => dump iommu info
(XEN)  key 'a' (ascii '61') => dump timer queues
(XEN)  key 'c' (ascii '63') => dump ACPI Cx structures
(XEN)  key 'd' (ascii '64') => dump registers
(XEN)  key 'e' (ascii '65') => dump evtchn info
(XEN)  key 'g' (ascii '67') => print grant table usage
(XEN)  key 'h' (ascii '68') => show this message
(XEN)  key 'i' (ascii '69') => dump interrupt bindings
(XEN)  key 'm' (ascii '6d') => memory info
(XEN)  key 'n' (ascii '6e') => NMI statistics
(XEN)  key 'o' (ascii '6f') => dump iommu p2m table
(XEN)  key 'q' (ascii '71') => dump domain (and guest debug) info
(XEN)  key 'r' (ascii '72') => dump run queues
(XEN)  key 's' (ascii '73') => dump softtsc stats
(XEN)  key 't' (ascii '74') => display multi-cpu clock info
(XEN)  key 'u' (ascii '75') => dump NUMA info
(XEN)  key 'v' (ascii '76') => dump VT-x VMCSs
(XEN)  key 'w' (ascii '77') => synchronously dump console ring buffer (dmesg)
(XEN)  key 'z' (ascii '7a') => dump IOAPIC info

参考:


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

工程问题C++语言求解

工程问题C++语言求解

Delores M.Etter、Jeanine A.Ingber / 冯力、周凯 / 机械工业出版社 / 2014-8 / 79元

本书介绍了如何利用ANSIC++编程语言以基于对象的编程方式来解决工程问题。书中引用了大量来自于不同工程、科学和计算机科学领域的示例,是一本理论和实践结合紧密的教材。针对C++基本语法的各个部分,由浅入深地进行讲解。每讲解一部分基础知识,同时会结合多个相关实例,实例内容详实,紧贴所讲内容,使读者能够立刻对所学知识进行练习,实战性强。一起来看看 《工程问题C++语言求解》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具