天天看點

資訊安全系統設計基礎第二周學習總結

資訊安全系統設計基礎第二周學習總結

學習目标

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編譯卻無法打開。

還未找到解決方法,準備詢問同學或翻閱書本