最常用 Linux Debug 命令总结
在 RTL / 验证开发中最常用的命令如下:
less
tail
tail -f
grep
grep -n
grep -r
find
wc
du
df
数字 IC 设计与验证环境中,在 Linux 服务器上进行仿真日志(simulation log)、编译日志(compile log)、以及 RTL 调试信息分析时常用的命令和操作方法。
目标包括:
- 快速定位 ERROR / WARNING
- 分析 仿真失败原因
- 搜索 RTL 信号或模块
- 提高 log 调试效率
适用于以下工具环境:
- VCS
- QuestaSim / ModelSim
- Verilator
- Xcelium
- FPGA 仿真环境
1 less ------ 交互式日志浏览工具
功能
less 用于 分页浏览大型文本文件,适用于 GB 级仿真日志。
相比 cat:
| 命令 | 特点 |
|---|---|
| cat | 一次性输出全部内容 |
| less | 分页浏览、支持搜索 |
基本用法
bash
less sim.log
常用操作
| 按键 | 功能 |
|---|---|
| Space | 向下翻页 |
| b | 向上翻页 |
| g | 跳到文件开头 |
| G | 跳到文件末尾 |
| q | 退出 |
| /pattern | 搜索字符串 |
| n | 下一个匹配 |
| N | 上一个匹配 |
常见调试操作
搜索 ERROR
/ERROR
搜索 WARNING
/WARNING
查找 assertion
/ASSERT
高级用法
打开文件并定位 ERROR
bash
less +/ERROR sim.log
打开文件并跳到末尾
bash
less +G sim.log
常用于查看 刚生成的仿真 log。
2 tail ------ 查看日志末尾
基本用法
bash
tail sim.log
默认输出 最后 10 行。
指定输出行数
查看最后 100 行:
bash
tail -n 100 sim.log
从指定行开始
bash
tail -n +200 sim.log
含义:
从第200行开始输出
3 tail -f ------ 实时日志监控
功能
实时监控日志文件变化。
典型场景:
- 仿真运行时监控 log
- regression 测试观察错误
- CI pipeline 调试
示例
bash
tail -f sim.log
当 log 更新时终端会持续输出新内容。
退出:
Ctrl + C
实时过滤 ERROR
bash
tail -f sim.log | grep ERROR
仅显示包含 ERROR 的日志。
4 grep ------ 文本搜索工具
grep 是 Linux 中最重要的 log 分析工具。
基本用法
bash
grep ERROR sim.log
显示行号
bash
grep -n ERROR sim.log
输出示例:
345: ERROR packet mismatch
忽略大小写
bash
grep -i error sim.log
显示上下文
查看 ERROR 前后 5 行:
bash
grep -n -A 5 -B 5 ERROR sim.log
参数说明:
| 参数 | 含义 |
|---|---|
| -A | After(后几行) |
| -B | Before(前几行) |
查找多个关键字
bash
grep -E "ERROR|FATAL|ASSERT" sim.log
5 递归搜索 RTL
查找某信号:
bash
grep -r "data_valid" ./rtl
查找模块定义:
bash
grep -r "module fifo" ./rtl
查找 parameter:
bash
grep -r "DATA_WIDTH" .
搜索 SystemVerilog class
bash
grep -r "class axi_driver" ./tb
6 find文件查找工具
用于查找工程文件。
查找 Verilog 文件
bash
find . -name "*.v"
查找 SystemVerilog
bash
find . -name "*.sv"
查找模块文件
bash
find . -name "*fifo*"
查找 log 文件
bash
find . -name "*.log"
7 wc 日志统计与分析
统计 ERROR 数量
bash
grep ERROR sim.log | wc -l
统计 WARNING
bash
grep WARNING sim.log | wc -l
统计错误类型
bash
grep ERROR sim.log | sort | uniq -c
示例输出:
10 packet mismatch
3 timeout error
8 du 文件大小与磁盘管理
查看文件大小
bash
du -sh sim.log
查看目录大小
bash
du -sh *
查看磁盘空间
bash
df -h
RTL Debug 工作流程
以下为常见 仿真失败排查流程。
Step 1 查看日志末尾
bash
tail -n 50 sim.log
判断:
- 是否存在 ERROR
- 是否存在 assertion failure
Step 2 搜索 ERROR
bash
grep -n ERROR sim.log
Step 3 查看上下文
bash
grep -n -A 10 -B 10 ERROR sim.log
Step 4 搜索 RTL 信号
bash
grep -r "packet_valid" ./rtl
Step 5 搜索 testbench
bash
grep -r "packet_valid" ./tb
一般调试命令组合
实时查看仿真
bash
tail -f sim.log
实时查看 ERROR
bash
tail -f sim.log | grep ERROR
查找 ERROR
bash
grep -n ERROR sim.log
查找 ERROR 上下文
bash
grep -n -A 5 -B 5 ERROR sim.log
搜索 RTL 信号
bash
grep -r "valid_ready" ./rtl