Top Banner
Trace 程式碼之皮 Wen Liao
25

Trace 程式碼之皮

Jul 10, 2015

Download

Software

Wen Liao
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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/