linux使用手冊

1.文件的解壓與壓縮

tar -xvf filename.tar
tar -xzvf filename.tar.gz
tar -xjvf filename.tar.bz2
tar -xZvf filename.tar.Z
unrar e filename.rar
unzip filename.zip

2.文件(夾)的複製等

rm filename 刪除文件
rm -r foldername 刪除文件夾
cp -r sourcename targetpath 複製文件夾sourcename至路徑targetpath處
mv sourcename targetpath 移動文件(夾)至路徑targetpath處

3.編譯與運行

gcc source.c -o execute 編譯source.c產生可執行文件execute
./execute 運行execute

4.vim操作

5.gdb調試

gcc test.c -g -o test //生成調試文件
gdb test //開始調試

r/run 運行直至結束或到達斷點處
c/continue 繼續運行至結束或到達斷點處
s/step 運行一步
n/next 運行一條語句
q/quit 退出gdb
k/kill 退出當前調試的程序

layout <src/arm> 顯示源代碼/彙編窗口
layout regs 顯示源代碼/彙編和寄存器窗口
layout split 顯示源代碼和彙編窗口
layout <next/prev> 顯示上一個/下一個layout
Ctrl+L 刷新窗口
Ctrl+x,再按a,退出layout,回到傳統模式,退回到進入layout之前的狀態

l/list 顯示10行代碼,若再次運行該命令則顯示接下來的10行代碼
set listsize 設置list命令顯示的源代碼數量最多爲count行,0表示不限制行數
set disassembly-flavor <intel/att> 設置彙編代碼顯示風格
show listsize 顯示listsize的值
edit 在編輯器中編輯location處的源代碼,如果省略location,則編輯當前位置
l/list <5,10> 顯示源代文件test.c中的第5行到第10行的代碼,
l/list test.c:5,10 顯示源文件test.c中第5行到第10行的代碼,在調試含有多個源文件的程序時使用
l/list 顯示function函數週圍的代碼
l/list test.c:function 顯示源文件test.c中function函數週圍的代碼,在調試含多個源文件的程序時使用
l/list * 顯示指定地址附近的代碼
search <字符串> 從當前行的下一行開始向前搜索
rev <字符串> 從當前行的上一行開始向後搜索
info line 顯示源代碼count處對應的彙編地址範圍
info line * 顯示地址addr處對應的源代碼位置

disas </ /m / /r / > 顯示彙編代碼,‘/m’混合輸出源代碼和彙編代碼;‘/r’混合輸出二進制和彙編代碼;
disas 第一種不帶參數,顯示當前正在執行的函數的彙編代碼;第二種是一個參數,顯示該地址所在函數的彙編代碼;第三種是兩個參數的disassemble start,end,顯示地址[start,end)內的彙編代碼;第四種是兩個參數的disassemble start,+length,顯示地址[start,start+length)內的彙編代碼。參數可以是16進制的地址,也可以是函數名。

b/breakpoint <行> (條件) 設置斷點
b/breakpoint 在某個函數處設置斷點
info breakpoints 查看當前所有的中斷點
disable <行> 使某個斷點失效
enable <行> 使某個斷點恢復有效
clear < /行/函數名> 刪除斷點
delete <斷點編號>… 刪除指點編號斷點

p/print(/x/d/u/o/t/a/c/f) 打印變量或表達式的當前值,(按照格式)
p/print <變量=值> 對變量進行賦值
set variable <變量=值>
whatis <變量或表達式> 用來顯示某個變量或表達式值的數據類型
display <變量名> 跟蹤查看一個變量,每次停下來都顯示它的值

x(/n,f,u爲可選參數)

查看指定單元內存的內容並按照格式打印
{
n: 需要顯示的內存單元個數,也就是從當前地址向後顯示幾個內存單元的內容,一個內存單元的大小由後面的u定義
f:顯示格式
x(hex) 按十六進制格式顯示變量。
d(decimal) 按十進制格式顯示變量。
u(unsigned decimal) 按十進制格式顯示無符號整型。
o(octal) 按八進制格式顯示變量。
t(binary) 按二進制格式顯示變量。
a(address) 按十六進制格式顯示變量。
c(char) 按字符格式顯示變量。
f(float) 按浮點數格式顯示變量
u:每個單元的大小,按字節數來計算。默認是4 bytes。GDB會從指定內存地址開始讀取指定字節,並把其當作一個值取出來,並使用格式f來顯示
b:1 byte h:2 bytes w:4 bytes g:8 bytes
比如x/3uh 0x54320表示從內存地址0x54320讀取內容,h表示以雙字節爲單位,3表示輸出3個單位,u表示按照十六進制顯示。
}

i/info frame 查看當前程序棧內容
i/info args 查看當前程序棧的信息
i/info locals 查看當前程序棧的參數
i/info r/registers 查看當前寄存器的值
i/info all-registers 查看當前寄存器的值,包括浮點寄存器
i/info catch 查看當前棧幀中的異常處理器

i/info threads 顯示當前可調試的所有線程
break test.c:12 thread all 在所有線程中相應的行上設置暫停
thread 切換當前線程爲指定id的線程
thread apply < command> 讓多個線程執行command命令
thread apply all 所有被調試程序執行command命令
set scheduler-locking [off/on/step]
{
off:所有線程都執行,是默認值
on:只有當前被調試線程執行
step: 在單步的時候,除了next過一個函數的情況(熟悉情況的人可能知道,這其實是一個設置斷點然後continue的行爲)以外,只有當前線程會執行

}
show scheduler-locking 查看當前鎖定線程的模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章