1. 程式人生 > >linux開發基礎之 vi gdb除錯(一)

linux開發基礎之 vi gdb除錯(一)

1)vi

vi工作模式:

編輯方式、插入方式和命令方式。當執行vi時,首先進入編輯方式

命令列模式功能鍵:
yy    :複製游標所在行到緩衝區
[n]yy :例如,6yy 表示拷貝從游標所在的該行“往下數”6行文字
p     :將緩衝區內的字元貼到游標所在位置。注意:所有與“y”有關的複製命令都必須與“p”配合才能完成複製與貼上功能。
dd    :刪除游標所在行。
[n]dd :從游標所在行開始刪除#行
/name :查詢字串name,如果有多個,可以通過n來切換
G     :
U     :

vi 退出命令:

Keystrokes Result
ZZ 儲存檔案,退出
:wq 儲存檔案,退出(和 ZZ 類似)
:q 退出。防止沒有儲存就退出。
:q! 退出。無論儲存與否,都退出。

vi查詢(補充說明):
當你用vi開啟一個檔案後,因為檔案太長,如何才能找到你所要查詢的關鍵字呢?在vi裡可沒有選單-〉查詢,
不過沒關係,
你在命令模式下敲斜杆(/)這時在狀態列(也就是螢幕左下腳)就出現了 “/”然後輸入你要查詢
的關鍵字敲回車就可以了。如果你要繼續查詢此關鍵字,敲字元n就可以繼續查找了。值得注意的是“/”是向
下查詢,而“?”是向上查詢,而在鍵盤定義上“?”剛好是“/”的上檔符.


vi程式碼塊縮排:1.ESC
2. shift
v進入visualline模式。
3.j, k
鍵選擇範圍
4.
鍵入>


========================================================================
2)GDB

在編譯時用 -g 選項開啟除錯選項

用 GDB 除錯程式
http://oss.org.cn/ossdocs/gnu/linux/gdb.html

GDB 下 watch的使用

http://www.cnblogs.com/lonelycatcher/archive/2011/10/09/2204865.html

示例:
1.編譯生成可執行檔案:
g++ -g first.cpp -o first

2.啟動GDB
gdb first

3.在main函式處設定斷點
break main

4.執行程式
run



5.單步執行
next

6.繼續執行
continue


1)gdb 除錯的程式名
2)gdb
   file 除錯的程式名


gdb命令
list(l)                                   檢視程式
break(b)  函式名               在某函式入口處新增斷點
break(b) 行號                    在指定行新增斷點
break(b) 檔名:行號       在指定檔案的指定行新增斷點(注意:有時需要指定檔名所在相對路徑)
break(b) 行號 if 條件        當條件為真時,指定行號處斷點生效,例如b 5 if i=10,當i等於10時第5行斷點生效。
print(p) 變數名                  檢視指定變數值
finish                                  執行程式,直到當前函式結束
watch 變數名                    對指定變數進行監控
quit(q)                                退出gdb
step(s)                              執行一行程式. 若呼叫函式, 則進入函式逐行執行。

finish  <--------------------- 退出函式

-------------------------------------------------------------------------------------------
watch通常需要和break,run,continue聯合使用

在使用watch時步驟如下:
1. 使用break在要觀察的變數所在處設定斷電;
2. 使用run執行,直到斷點;
3. 使用watch設定觀察點;
4. 使用continue觀察設定的觀察點是否有變化。


//很好的部落格http://
http://blog.csdn.net/haoel


Linux開發工具視訊:
GCC入門(上)(下)Makefile(上)(下)GDB入門(上)(下)

http://www.cppblog.com/fztcjjl/archive/2012/05/02/173434.html

Linux程式設計31課