Slide 1

Slide 1 text

Trace 程式碼之皮 Wen Liao

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

測試環境: OS

Slide 5

Slide 5 text

測試環境: 編輯器

Slide 6

Slide 6 text

動機 ● 菜鳥的痛苦,看不懂別人的程式碼。 ● 花時間時間在找尋 ○ 這變數誰在用的? ○ 呼叫的這個函數到在那邊實作? ○ 這個函數是誰在呼叫的? ○ 我找到的變數到底是在哪個函數內? ○ ...

Slide 7

Slide 7 text

編輯器也是有效率高低的 ● 找出現在游標的變數會被誰呼叫? ○ 菜鳥式:以gedit為例 ■ 游標移動到Search,按一下滑鼠左鍵 ■ 選Find,從鍵盤輸入要找的變數名稱 ■ 游標移動到搜尋按鈕,看要往上找還是往下找 ○ 非菜鳥式:以gedit為例 ■ 複製變數,按ctrl + f,貼上 ■ ctrl + g往下找, shift + crtl + g往上找 ○ vim:單鍵搞定 ■ * 自動幫你往下找,不用複製貼上變數名稱 ■ # 自動幫你往上找,不用複製貼上變數名稱

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

為什麼要用編輯器的進階功能? ● 搜尋和定位是一種干擾 ○ 你必須停下目前的思緒,找出下一筆資料才能夠繼續 思考。 ● 這些功能能夠讓搜尋和定位這兩件事時間最 小化,切換程式思維的時間就會更少。

Slide 11

Slide 11 text

說明 ● 本投影片只是vgod的文章:給程式設計師的 Vim入門圖解說明的註腳

Slide 12

Slide 12 text

範例程式,九九乘法表

Slide 13

Slide 13 text

快速找下一個相同字串 ①游標在這邊,按* ②游標移動了 _ _

Slide 14

Slide 14 text

快速找上一個相同字串 ①游標在這邊,按# ②游標移動了 _ _

Slide 15

Slide 15 text

馬上知道自己在哪個函數中 ①游標在這邊,按[[ ②游標移動了 _

Slide 16

Slide 16 text

直接跳到下一個函數 ①游標在這邊,按]] ②游標移動了 _

Slide 17

Slide 17 text

跳到目前block開頭 ①游標在這邊,按[{ ②游標移動了 _

Slide 18

Slide 18 text

跳到目前block結尾 ①游標在這邊,按]} ②游標移動了 _

Slide 19

Slide 19 text

成對跳躍 (1) 按%切換 _ _

Slide 20

Slide 20 text

成對跳躍 (2) 按%切換 _ _

Slide 21

Slide 21 text

成對跳躍%還可以用在 ● [ ] ● #ifdef …. #endif

Slide 22

Slide 22 text

切回上次游標位置 ①游標在這邊,按[[ ②游標移動了 _ ③按``切回上次游標位置

Slide 23

Slide 23 text

結論 ● 善用編輯器功能,可以減少trace code的時 間。 ● 上面的使用方式當專案程式碼大到某個程度 效益就不大了。 ● 這些工具只是減少trace code的搜尋定位時 間,理解程式碼拼湊並理解完全和工具無關。 而這些才是真正trace code的肉、骨、髓。

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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