测试 Linux 驱动(drivers)通常分为功能测试、稳定性测试、性能测试、边界/异常测试几个层次。下面按“从简单到系统”的方式给你一个实用指南。
make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
sudo insmod mydrv.ko
sudo rmmod mydrv
dmesg | tail
lsmod | grep mydrv
✅ 适合:验证能否加载、是否有 oops、printk 输出是否正确
fd = open("/dev/mydev", O_RDWR);
read(fd, buf, size);
write(fd, buf, size);
ioctl(fd, CMD, &arg);
echo / catdd✅ 适合:验证接口、数据正确性
for i in $(seq 1 100); do
./test_app
done
with open("/dev/mydev", "rb") as f:
data = f.read(1024)
✅ 适合:回归测试
make ARCH=um menuconfig
make ARCH=um run_tests
✅ 适合:纯逻辑函数、算法
make -C tools/testing/selftests
sudo make -C tools/testing/selftests run_tests
✅ 适合:系统调用、接口行为
stress-ngstress-ng --dev /dev/mydev --timeout 60s
while true; do ./test_app; done
pr_info("val=%d\n", val);
echo 'file mydrv.c +p' > /sys/kernel/debug/dynamic_debug/control
dmesg
addr2line -e mydrv.ko <addr>
gdb + kgdbftraceperf| 类型 | 测试方式 |
|---|---|
| 真实硬件 | 实际插拔、信号测量 |
| USB | usbmon |
| PCI | lspci, setpci |
| 虚拟驱动 | dummy, loop, null |
insmoddmesg 检查初始化rmmod如果你愿意,可以告诉我:
我可以给你针对性的测试方案和示例代码。