trace 程式碼之皮

25
Trace 程式碼之皮 Wen Liao

Upload: wen-liao

Post on 10-Jul-2015

1.182 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Trace 程式碼之皮

Trace 程式碼之皮

Wen Liao

Page 2: Trace 程式碼之皮

Disclaimer

投影片資料為作者整理資料及個人意見,沒有經過嚴謹確認,請讀者自行斟酌

Page 3: Trace 程式碼之皮

目標

分享在Linux 下使用編輯器 trace 程式碼的技巧

Page 4: Trace 程式碼之皮

測試環境: OS

Page 5: Trace 程式碼之皮

測試環境: 編輯器

Page 6: Trace 程式碼之皮

動機

● 菜鳥的痛苦,看不懂別人的程式碼。● 花時間時間在找尋

○ 這變數誰在用的?○ 呼叫的這個函數到在那邊實作?○ 這個函數是誰在呼叫的?○ 我找到的變數到底是在哪個函數內?○ ...

Page 7: Trace 程式碼之皮

編輯器也是有效率高低的

● 找出現在游標的變數會被誰呼叫?○ 菜鳥式:以gedit為例

■ 游標移動到Search,按一下滑鼠左鍵■ 選Find,從鍵盤輸入要找的變數名稱■ 游標移動到搜尋按鈕,看要往上找還是往下找

○ 非菜鳥式:以gedit為例■ 複製變數,按ctrl + f,貼上■ ctrl + g往下找, shift + crtl + g往上找

○ vim:單鍵搞定■ * 自動幫你往下找,不用複製貼上變數名稱■ # 自動幫你往上找,不用複製貼上變數名稱

Page 8: Trace 程式碼之皮

我就喜歡用gedit慢慢找,咬我啊

Page 9: Trace 程式碼之皮

等你遇到一個檔案上萬行,單一函數幾百行的時候就知

道厲害!

Page 10: Trace 程式碼之皮

為什麼要用編輯器的進階功能?

● 搜尋和定位是一種干擾○ 你必須停下目前的思緒,找出下一筆資料才能夠繼續

思考。

● 這些功能能夠讓搜尋和定位這兩件事時間最小化,切換程式思維的時間就會更少。

Page 12: Trace 程式碼之皮

範例程式,九九乘法表

Page 13: Trace 程式碼之皮

快速找下一個相同字串

①游標在這邊,按*

②游標移動了_

_

Page 14: Trace 程式碼之皮

快速找上一個相同字串

①游標在這邊,按#

②游標移動了

_

_

Page 15: Trace 程式碼之皮

馬上知道自己在哪個函數中

①游標在這邊,按[[

②游標移動了

_

Page 16: Trace 程式碼之皮

直接跳到下一個函數

①游標在這邊,按]]

②游標移動了

_

Page 17: Trace 程式碼之皮

跳到目前block開頭

①游標在這邊,按[{

②游標移動了

_

Page 18: Trace 程式碼之皮

跳到目前block結尾

①游標在這邊,按]}

②游標移動了

_

Page 19: Trace 程式碼之皮

成對跳躍 (1)

按%切換

_ _

Page 20: Trace 程式碼之皮

成對跳躍 (2)

按%切換_

_

Page 21: Trace 程式碼之皮

成對跳躍%還可以用在

● [ ]● #ifdef …. #endif

Page 22: Trace 程式碼之皮

切回上次游標位置

①游標在這邊,按[[

②游標移動了

_

③按``切回上次游標位置

Page 23: Trace 程式碼之皮

結論

● 善用編輯器功能,可以減少trace code的時間。

● 上面的使用方式當專案程式碼大到某個程度效益就不大了。

● 這些工具只是減少trace code的搜尋定位時間,理解程式碼拼湊並理解完全和工具無關。而這些才是真正trace code的肉、骨、髓。

Page 24: Trace 程式碼之皮

延伸作業

● 安裝ctags和cscope,嘗試操作。● 學習grep和簡單的POSIX regular expression

Page 25: Trace 程式碼之皮

參考資料

● 給程式設計師的Vim入門圖解說明 - vgod○ http://blog.vgod.tw/2009/12/08/vim-cheat-sheet-for-

programmers/