1. mdb 变量。
mdb的变量中实际记录的是该变量的地址。
> rootvfs/J
rootvfs:
rootvfs:
fffffffffbcaaab0
> fffffffffbcaaab0/J
root:
root:
fffffffffbcaa910
> root/J
root:
root:
fffffffffbcaa910
解释如下,从二三两个命令的结果相同,可以理解为root=fffffffffbcaaab0。实际上
root可以理解为内容中的一个变量。变量的地址是fffffffffbcaaab0,该变量的值实际为fffffffffbcaa910。其实此处的
root如果在C中应该是&root。
2.dot的更新。dot中记录了上一次命令求值的地址。
>
rootvfs/J
rootvfs:
rootvfs: fffffffffbcaaab0
> ./J
rootvfs:
rootvfs:
fffffffffbcaaab0
> /J
rootvfs:
rootvfs:
fffffffffbcaaab0
此处三个示例。dot的值一直是rootvfs。
> root,4/X
root:
root:
fbcaa910 ffffffff 8616a5c0 ffffff00
>
/X
root+0xc: ffffff00
此处的命令,第一个是循环打印内存的值。所以四次dot都在更新。最后再运行
/X是,打印上一命令的最后一次地址更新处的值。
3求取符号的值。
rootvfs=X(J等是类似的)
4.::print
中type的用法。(print 打印结构体)
此处的type是写结构体的名字,(用法与c相同)。如果一个类型是tyepdef出来的。则可以
直接写在type处,否则须写为struct type_name
如:76a50::print -t 'aio_worker_t' 或者
76a50::print -t 'struct aio_worker'
5.> 是一个内置命令,而<则不是,他是一个运算。
6.
修改变量的值。
rootvfs/W value (注,此时应该用mdb -w启动,否则没有写权限)
7.mdb在调试内核或
者内核coredump文件时有
$
8. ::ps命令可以完成类似操作系统ps的功能, 还可以跟grep连用.此时的管道用!代替. 如>::ps -f ! grep hello
9. ::dcmds可以列出所有的可用命令, ::help可以得到更高层的帮助信息.
10. ::cpuinfo可以列出当前在占用cpu的进程, 估计也就是导致crash的进程了.
阅读(2695) | 评论(0) | 转发(0) |