kdump.1
KDUMP(1)
KDUMP(1)
FreeBSD General Commands Manual
KDUMP(1)
kdump
—
显示内核跟踪数据
kdump
[-dEnlHRSsTA
] [-f
trfile] [-m
maxdata] [-p
pid] [-t
trstr]
kdump
命令以人类可读的格式显示使用 ktrace(1) 生成的内核跟踪文件。 默认显示当前目录下的文件 ktrace.out 。
选项如下:
以十进制显示所有数字。
显示经过的时间戳(自跟踪开始以来的时间)。
-f
trfile
显示指定的文件而不是 ktrace.out 。
列出每个跟踪记录的线程 ID (tid)(如果有)。 如果没有可用的线程 ID,将打印 0。
循环读取跟踪文件,一旦到达文件末尾,等待更多数据。
-m
maxdata
解码 I/O 时最多显示 maxdata 字节。
禁止临时翻译。 通常 kdump
会尝试将许多系统调用解码为更易于阅读的格式。 例如, ioctl(2) 值被替换为宏名称, errno 值被替换为 strerror(3) 字符串。 抑制此功能会产生更一致的输出格式,并且易于进行进一步处理。
-p
pid
仅显示与进程或线程 pid 对应的跟踪事件。 当有多个进程或线程记录在同一个跟踪文件中时,这可能很有用。
显示相对时间戳(自上次输入以来的时间)。
解码 STRU 记录时,显示 UID、GID、日期等结构成员。 符号而不是数字。
显示系统调用号码。
禁止显示 I/O 数据。
显示每个条目的绝对时间戳(自纪元以来的秒数)。
显示被跟踪进程的 ABI 描述。
-t
trstr
请参阅 ktrace(1) 的 -t
选项。
kdump
的输出格式是面向行的,有几个字段。 下面的示例显示了由以下命令生成的 kdump 的一部分:
?> ktrace echo "ktrace" ?> kdump 85045 echo CALL writev(0x1,0x804b030,0x2) 85045 echo GIO fd 1 wrote 7 bytes "ktrace " 85045 echo RET writev 7
第一个字段是被跟踪进程的 PID。 第二个字段是被跟踪程序的名称。 第三个字段是内核代表进程执行的操作。 如果正在打印线程 ID,则会在 PID 字段和程序名称字段之间的输出中添加一个额外的线程 ID 列。
在上面的第一行中,内核代表进程执行 writev(2) 系统调用,因此这是一个 CALL
操作。 第四个字段显示已执行的系统调用,包括其参数。 writev(2) 系统调用接受一个文件描述符,在本例中为 1,或标准输出,然后是一个指向要写入的 iovector 的指针,以及要写入的 iovector 的数量。 在第二行中,我们看到操作是 GIO
, 用于一般 I/O,文件描述符 1 写入了 7 个字节。 接下来是写入的七个字节,即带有回车和换行符的字符串 “ktrace
” 。 最后一行是 RET
操作,显示来自内核的返回,我们从哪个系统调用返回,以及进程收到的返回值。 writev(2) 系统调用写入了七个字节,因此返回值是 7。
可能的操作是:
Name
Operation
Fourth field
进入系统调用
系统调用名称和参数
从系统调用返回
系统调用名称和返回值
文件名查找
文件路径
通用 I/O
fd,读/写,字节数
信号
信号名称、处理程序、掩码、代码
上下文切换
停止/恢复用户/内核 wmesg
来自用户进程的数据
the 数据
各种系统调用
结构体
sysctl(3) 请求
MIB 名称
进入页面错误
故障地址和类型
从页面错误返回
故障结果
ktrace(1)
kdump
命令出现在 4.4BSD 中。
March 28, 2014
FreeBSD 13.1-RELEASE
最后更新于