内核打印
2026-06-28
5
0
// 等价关系
pr_info("message"); // 等价于 printk(KERN_INFO "message");
pr_err("message"); // 等价于 printk(KERN_ERR "message");
pr_warn("message"); // 等价于 printk(KERN_WARNING "message");
pr_debug("message"); // 等价于 printk(KERN_DEBUG "message");
| 宏/变量 | 说明 | 示例输出 |
|---|---|---|
__func__ |
当前函数名 | xhci_pci_probe |
__LINE__ |
当前行号 | 42 |
__FILE__ |
当前文件名 | xhci-pci.c |
dev->vendor |
PCI Vendor ID | 0x8086 (Intel) |
dev->device |
PCI Device ID | 0x1e31 |
dev->irq |
中断号 | 16 |
pci_name(dev) |
PCI 设备名称 | 0000:00:14.0 |
dev->dev |
设备结构体 | - |
dev->driver_data |
驱动私有数据 | - |
// 最常用的几个
pr_emerg("紧急消息\n"); // 最高优先级
pr_alert("警告消息\n");
pr_crit("严重消息\n");
pr_err("错误消息\n"); // 显示错误
pr_warn("警告消息\n"); // 显示警告
pr_notice("通知消息\n");
pr_info("信息消息\n"); // 普通信息 ← 你用的这个
pr_debug("调试消息\n"); // 调试信息(需要开启 DEBUG)
// 还有带函数名和行号的版本
pr_info("%s: 这是一条信息\n", __func__);
pr_info("%s:%d: 带行号的日志\n", __func__, __LINE__);
// 1. 打印 PCI 设备信息
pr_info("=== USBXBH: PCI device: vendor=0x%04x, device=0x%04x\n",
dev->vendor, dev->device);
// 2. 打印 PCI 设备编号
pr_info("=== USBXBH: PCI slot: %s\n", pci_name(dev));
// 3. 打印设备 ID 匹配信息
pr_info("=== USBXBH: matched ID: vendor=0x%04x, device=0x%04x\n",
id->vendor, id->device);
// 4. 打印中断号
pr_info("=== USBXBH: IRQ: %d\n", dev->irq);
// 5. 打印设备资源信息
pr_info("=== USBXBH: resource flags: 0x%08lx\n",
pci_resource_flags(dev, 0));
// 6. 打印函数名和行号(调试利器)
pr_info("=== USBXBH: %s() called, line %d\n", __func__, __LINE__);
ARM&Linux环境搭建





