資訊安全系統設計基礎第二周學習總結
學習目标 |
1. 熟悉Linux系統下的開發環境 2. 熟悉vi的基本操作 3. 熟悉gcc編譯器的基本原理 4. 熟練使用gcc編譯器的常用選項 5 .熟練使用gdb調試技術 6. 熟悉makefile基本原理及文法規範 7. 掌握靜态庫和動态庫的生成 |
内容一:vim編輯器的使用
1.vim編輯器的三種模式
Ⅰ正常模式:(按Esc或Ctrl+[進入) 左下角顯示檔案名或為空
Ⅱ插入模式:(按i鍵進入) 左下角顯示--INSERT--
Ⅲ可視模式:左下角顯示—VISUAL
2、vim的一些基本操作
Ⅰ、遊标移動:
在進入vim後,按下i鍵進入插入模式。在該模式下您可以輸入文本資訊,下面請輸入如下三行資訊:
12345678
abcdefghijk
shiyanlou.com
按Esc進入普通模式,在該模式下使用方向鍵或者h,j,k,l鍵可以移動遊标。
按鍵 | 說明 |
h | 左 |
l | 右(小寫L) |
j | 下 |
k | 上 |
w | 移動到下一個單詞 |
b | 移動到上一個單詞 |
請嘗試在普通模式下使用方向鍵移動光标到shiyanlou這幾個字母上面
Ⅱ.插入模式
在普通模式下使用下面的鍵将進入插入模式,并可以從相應的位置開始輸入
指令 | |
i | 在目前光标處進行編輯 |
I | 在行首插入 |
A | 在行末插入 |
a | 在光标後插入編輯 |
o | 在目前行後插入一個新行 |
O | 在目前行前插入一個新行 |
cw | 替換從光标所在位置後到一個單詞結尾的字元 |
請嘗試不同的從普通模式進入插入模式的方法,在最後一行shiyanlou前面加上www.,注意每次要先回到普通模式才能切換成以不同的方式進入插入模式
Ⅲ.儲存文檔
指令行模式下儲存文檔:
儲存文檔從普通模式輸入:進入指令行模式,輸入w回車,儲存文檔。輸入:w 檔案名可以将文檔另存為其他檔案名或存到其它路徑下
Ⅳ.退出vim
指令行模式下退出vim:
從普通模式輸入:進入指令行模式,輸入wq回車,儲存并退出編輯
以下為其它幾種退出方式:
:q! | 強制退出,不儲存 |
:q | 退出 |
:wq! | 強制儲存并退出 |
:w <檔案路徑> | 另存為 |
:saveas 檔案路徑 | |
:x | 儲存并退出 |
:wq |
Ⅴ.普通模式下退出vim
普通模式下輸入Shift+zz即可儲存退出vim
Ⅵ.删除文本
1.普通模式下删除vim文本資訊
進入普通模式,使用下列指令可以進行文本快速删除:
x | 删除遊标所在的字元 |
X | 删除遊标所在前一個字元 |
Delete | 同x |
dd | 删除整行 |
dw | 删除一個單詞(不适用中文) |
d$或D | 删除至行尾 |
d^ | 删除至行首 |
dG | 删除到文檔結尾處 |
d1G | 删至文檔首部 |
除此之外,你還可以在指令之前加上數字,表示一次删除多行,如:
2dd表示一次删除2行
3.vim的按鍵圖
内容二:Linux基礎
1 Linux指令
如果使用GUI,Linux和Windows沒有什麼差別。Linux學習應用的一個特點是通過指令行進行使用。
登入Linux後,我們就可以在#或$符後面去輸入指令,有的時候指令後面還會跟着
選項
(options)或
參數
(arguments)。即Linux中指令格式為:
command [options] [ arguments ] //中括号代表是可選的,即有些指令不需要選項也不需要參數
選項
是調整指令執行行為的開關,
選項
不同決定了指令的顯示結果不同。
參數
是指指令的作用對象。
如ls指令,
ls
或
ls .
顯示是目前目錄的内容,這裡“.”就是參數,表示目前目錄,是預設的可以省略。我們可以用
ls -a .
顯示目前目錄中的所有内容,包括隐藏檔案和目錄。其中“-a” 就是選項,改變了顯示的内容,如下圖所示:
内容三:Linux下C語言程式設計基礎
一、GCC編譯器
二、使用GCC的四個步驟
- 預處理:gcc –E hello.c –o hello.i;gcc –E調用cpp
- 編 譯:gcc –S hello.i –o hello.s;gcc –S調用ccl
- 彙 編:gcc –c hello.s –o hello.o;gcc -c 調用as
- 鍊 接:gcc hello.o –o hello ;gcc -o 調用ld三、GCC支援的檔案類型
三、gdb
建議使用CGDB,比GDB好用,熟悉VC的調試方式,可以使用DDD。 注意使用GCC編譯時要加“-g”參數。 參考gdb參考卡GDB最基本的指令有
- gdb programm(啟動GDB)
- b 設斷點(要會設4種斷點:行斷點、函數斷點、條件斷點、臨時斷點)
- run 開始運作程式
- bt 列印函數調用堆棧
- p 檢視變量值
- c 從目前斷點繼續運作到下一個斷點
- n 單步運作
- s 單步運作
- quit 退出GDB
問題:GDB的n(next)指令讓GDB執行下一行,然後暫停。 s(step)指令的作用與此類似,隻是在函數調用時step指令會進入函數,那麼實際使用中應該優先選用哪個?為什麼?
其他幾個我認為應該掌握的調試指令有:
- display 跟蹤變量值的改變
- until 跳出循環
- finish 跳出函數
- help 幫助
- gdb常用代碼指令
- $gdb
- 這樣可以和gdb進行互動了。
- *啟動gdb,并且分屏顯示源代碼:
- $gdb -tui
- 這樣,使用了'-tui'選項,啟動可以直接将螢幕分成兩個部分,上面顯示源代碼,比用list友善多了。這時候使用上下方向鍵可以檢視源代碼,想要指令行使用上下鍵就用[Ctrl]n和[Ctrl]p.
- *啟動gdb調試指定程式app:
- $gdb app
- 這樣就在啟動gdb之後直接載入了app可執行程式,需要注意的是,載入的app程式必須在編譯的時候有gdb調試選項,例如'gcc -g app app.c',注意,如果修改了程式的源代碼,但是沒有編譯,那麼在gdb中顯示的會是改動後的源代碼,但是運作的是改動前的程式,這樣會導緻跟蹤錯亂的。
- *啟動程式之後,再用gdb調試:
- $gdb
- 這裡,是程式的可執行檔案名,是要調試程式的PID.如果你的程式是一個服務程式,那麼你可以指定這個服務程式運作時的程序ID。gdb會自動attach上去,并調試他。program應該在PATH環境變量中搜尋得到。
- *啟動程式之後,再啟動gdb調試:
- 這裡,程式是一個服務程式,那麼你可以指定這個服務程式運作時的程序ID,是要調試程式的PID.這樣gdb就附加到程式上了,但是現在還沒法檢視源代碼,用file指令指明可執行檔案就可以顯示源代碼了。
- **啟動gdb之後的互動指令:
- 互動指令支援[Tab]補全。
- *顯示幫助資訊:
- (gdb) help
- *載入指定的程式:
- (gdb) file app
-
這樣在gdb中載入想要調試的可執行程式app。如果剛開始運作gdb而不是用gdb
app啟動的話可以這樣載入app程式,當然編譯app的時候要加入-g調試選項。
- *重新運作調試的程式:
- (gdb) run
- 要想運作準備調試的程式,可使用run指令,在它後面可以跟随發給該程式的任何參數,包括标準輸入和标準輸出說明符(<和> )和shell通配符(*、?、[、])在内。
- 參考資料:一、百度百科
- 二、vaqeteart的部落格—常用gdb代碼大全
遇到的問題
一:一開始按q!無法退出vimtutor
解決方法:通過詢問同學,了解到需要打:才能退出
二:在檔案夾中可以搜尋到add.c檔案,但是通過gcc編譯卻無法打開。
還未找到解決方法,準備詢問同學或翻閱書本