Set
set [pid | taskp | [-c cpu] | -p] | [crash_variable [setting]] | -v
1、設置要顯示的內容,內容一般以進程為單位。
Set pid 設置當前的內容為pid所代表的進程
Set taskp 設置當前的內容為十六制表示的taskp任務的內容
Set –p 設置當前的內容為panic任務的內容
Set -v 顯示crash當前的內部變量
Set 不帶參數,表示顯示當前任務的內容
2、同時set命令也可以設置當前crash的內部變量
Set scroll on表示開啟滾動條。
具體的內部變量可以通過set –v命令獲得,也可以通過help set來查看幫助。
Ascii
把一個十六進制表示的字符串轉化成ascii表示的字符串
Ascii 不帶參數則顯示ascii碼表
Ascii number number所代表的ascii字符串
Struct
struct struct_name[.member[,member]][-o][-l offset][-rfu] [address | symbol]
[count | -c count]
顯示結構體的具體內容(下面只介紹常用的,具體的可通過命令help struct查詢)
注:如果crash關鍵字與name所表示的結構體名稱不沖突,可以省略struct關鍵字。
Struct name 顯示name所表示的結構體的具體結構
Struct name.member 顯示name所表示的結構體中的member成員
Struct name –o 顯示name所表示的結構體的具體結構,同時也顯示每個成員的偏移量
注:如果crash關鍵字與name所表示的結構體名稱不沖突,可以省略struct關鍵字。
Union
union union_name[.member[,member]] [-o][-l offset][-rfu] [address | symbol]
[count | -c count]
顯示聯合體的具體內容,用法與struct一致。
*
它是一個快捷鍵,用來取代struct和union。
Struct page == *page
Struct page == *page
P
p [-x|-d][-u] expression
Print的縮寫,打印表達式的值。表達式可以為變量,也可以為結構體。
通過命令alias可以查看命令縮寫的列表。
Px expression == p –x expression 以十六進制顯示expression的值
Pd expression == p –d expression 以十進制顯示expression的值
不加參數的print,則根據set設置來顯示打印信息。
Whatis
whatis [struct | union | typedef | symbol]
搜索數據或者類型的信息
參數可以是結構體的名稱、聯合體的名稱、宏的名稱或內核的符號。
Sym
sym [-l] | [-M] | [-m module] | [-p|-n] | [-q string] | [symbol | vaddr]
把一個標志符轉換到它所對應的虛擬地址,或者把虛擬地址轉換為它所對應的標志符。
Sym –l 列出所有的標志符及虛擬地址
Sym –M 列出模塊標志符的集合
Sym –m module name 列表模塊name的虛擬地址
Sym vaddr 顯示虛擬地址addr所代表的標志
Sym symbol 顯示symbol標志符所表示的虛擬地址
Sym –q string 搜索所有包含string的標志符及虛擬地址
Dis
dis [-r][-l][-u][-b [num]] [address | symbol | (expression)] [count]
disassemble的縮寫。把一個命令或者函數分解成匯編代碼。
Dis symbol
Dis –l symbol
Bt
bt [-a|-g|-r|-t|-T|-l|-e|-E|-f|-F|-o|-O] [-R ref] [-I ip] [-S sp] [pid | task]
跟蹤堆棧的信息。
Bt 無參數則顯示當前任務的堆棧信息
Bt –a 以任務為單位,顯示每個任務的堆棧信息
Bt –t 顯示當前任務的堆棧中所有的文本標識符
Bt –f 顯示當前任務的所有堆棧數據,通過用來檢查每個函數的參數傳遞
Dev
dev [-i | -p]
顯示數據關聯着的塊設備分配,包括端口使用、內存使用及PCI設備數據
Dev –I 顯示I/O端口使用情況
Dev –p 顯示PCI設備數據
Files
files [-l | -d dentry] | [-R reference] [pid | taskp]
顯示某任務的打開文件的信息
Files 顯示當前任務下所有打開文件的信息
File –l 顯示被服務器鎖住的文件的信息
Irq
irq [[[index ...] | -u] | -d | -b]
顯示中斷編號的所有信息
Irq 不加參數,則顯示所有的中斷
Irq index 顯示中斷編號為index的所有信息
Irq –u 僅僅顯示正在使用的中斷
Foreach
foreach [[pid | taskp | name | [kernel | user]] ...] command [flag] [argument]
跟C#中的foreach類似,為多任務准備的。它根據參數指定的任務中去查找command相關的內容。任務可以用pid、taskp、name來指定。如果未指定,則搜索所有的任務。形如:
Foreach bash task 表示搜索任務bash中的task相關數據。
當command為{bt,vm,task,files,net,set,sig,vtop}時,顯示的內容與命令中的命令類似,只是加了foreach則顯示所有任務,而不是單條任務。形如:
Foreach files 顯示所有任務打開的文件
Runq
無參數。顯示每個CPU運行隊列中的任務。
Alias
alias [alias] [command string]
創建給定的命令的別名,如果未指定參數,則顯示創建好的別名列表。
Command string可以是帶各種參數的命令。
Mount
mount [-f] [-i] [-n pid|task] [vfsmount|superblock|devname|dirname|inode]
顯示掛載的相關信息
Mount 不加參數,則顯示所有已掛載的文件系統
Mount –f 顯示每個掛載文件系統中已經打開的文件
Mount –I 顯示每個掛載文件系統中的dirty inodes
Search
search [-s start] [ -[kKV] | -u | -p ] [-e end | -l length] [-m mask] -[cwh] value ...
搜索在給定范圍的用戶、內核虛擬內存或者物理內存。如果不指定-l length或-e end,則搜索虛擬內存或者物理內存的結尾。內存地址以十六進制表示。
-u 如果未指定start,則從當前任務的用戶內存搜索指定的value
-k 如果未指定start,則從當前任務的內核內存搜索指定的value
-p 如果未指定start,則從當前任務的物理內存搜索指定的value
-c 后面則指定要搜索的字符串,這個搜索中很有用。
Vm
vm [-p | -v | -m | [-R reference] | [-f vm_flags]] [pid | taskp] ...
顯示任務的基本虛擬內存信息。
-p 顯示虛擬內存及轉換后的物理內存信息
Net
net [-a] [[-s | -S] [-R ref] [pid | taskp]] [-n addr]
顯示各種網絡相關的數據
-a 顯示ARP cache
-s 顯示指定任務的網絡信息
-S 與-s相似,但是顯示的信息更為詳細
該命令與foreach配合使用,能加快定位的速度。
Vtop
vtop [-c [pid | taskp]] [-u|-k] address ...
顯示用戶或內核虛擬內存所對應的物理內存。其中-u和-k分別表示用戶空間和內核空間。
Ptov
ptov address ...
該命令與vtop相反。把物理內存轉換成虛擬內存。
Btop
btop address ...
把一個十六進制表示的地址轉換成它的分頁號。
Ptob
ptob page_number ...
該命令與btop相反,是把一個分頁號轉換成地址。
Sig
sig [[-l] | [-s sigset]] | [-g] [pid | taskp] ...
顯示一個或者多個任務的signal-handling數據
-l 列出信息的編號及名字
-g 顯示指定任務線程組中所有的signal-handling數據
Waitq
waitq [ symbol ] | [ struct.member struct_addr ] | [ address ]
列出在等待隊列中的所有任務。參數可以指定隊列的名稱、內存地址等。
Pte
pte contents ...
把一個十六進制表示的頁表項轉換為物理頁地址和頁的位設置
Swap
無參數。顯示已經配置好的交換設備的信息。
Wr
wr [-u|-k|-p] [-8|-16|-32|-64] [address|symbol] value
根據參數指定的寫內存。在定位系統出錯的地方時,一般不使用該命令。
Eval
eval [-b][-l] (expression) | value
計算表達式的值,及把計算結果或者值顯示為16、10、8和2進制。表達式可以有運算符,包括加減乘除移位等。
-b 統計2進制位數為1的索引編號。
List
list [[-o] offset] [-e end] [-s struct[.member[,member]]] [-H] start
顯示鏈表的內容
Mach
mach [-cm]
顯示機器的一些信息,如CPU主頻等。
-c 顯示每個CPU的結構體信息
-m 顯示物理內存每段的映射
Log
log [-m]
顯示內核的日志,以時間的先后順序排列
-m 在每個消息前添加該消息的日志等級
Sys
sys [-c [name|number]] config
顯示特殊系統的數據。不指定參數,則顯示crash啟動時打印的系統數據。
-c [name|number] 如果不指定參數,則顯示所有的系統調用。否則搜索指定的系統調用。
Config 顯示內核的配置。不過必須把CONFIG_IKCONFIG編進內核
Rd
rd [-dDsSupxmf][-8|-16|-32|-64][-o offs][-e addr] [address|symbol] [count]
顯示指定內存的內容。缺少的輸出格式是十六進制輸出
-d 以十進制方式輸出
-D 以十進制無符號輸出
-8 只輸出最后8位
-16 只輸出最后16位
-32 只輸出最后32位
-64 只輸出最后64位
-o offs 開始地址的偏移量
-e addr 顯示內存,直到到過地址addr為止
Address 開始的內存地址,以十六進制表示
Symbol 開始地址的標識符
Count 按多少位顯示內存地址。如addr=1234,count=8,則顯示34 12
Task
task [-R member[,member]] [pid | taskp] ...
顯示指定內容或者進程的task_struct的內容。不指定參數則顯示當前內容的task_struct的內容。
Pid 進程的pid
Taskp 十六進制表示的task_struct指針。
-R member
Extend
extend [shared-object ...] | [-u [shared-object ...]]
動態裝載或卸載crash額外的動態鏈接庫。
Repeat
repeat [-seconds] command
每隔seconds重復一次命令command,無限期的執行下去。
Timer
無參數。按時間的先后順序顯示定時器隊列的數據。
Gdb
gdb command ...
用GDB執行命令command。