Trace 程式碼之皮

  • View
    1.188

  • Download
    0

  • Category

    Software

Preview:

Citation preview

Trace 程式碼之皮

Wen Liao

Disclaimer

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

目標

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

測試環境: OS

測試環境: 編輯器

動機

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

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

編輯器也是有效率高低的

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

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

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

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

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

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

道厲害!

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

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

思考。

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

範例程式,九九乘法表

快速找下一個相同字串

①游標在這邊,按*

②游標移動了_

_

快速找上一個相同字串

①游標在這邊,按#

②游標移動了

_

_

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

①游標在這邊,按[[

②游標移動了

_

直接跳到下一個函數

①游標在這邊,按]]

②游標移動了

_

跳到目前block開頭

①游標在這邊,按[{

②游標移動了

_

跳到目前block結尾

①游標在這邊,按]}

②游標移動了

_

成對跳躍 (1)

按%切換

_ _

成對跳躍 (2)

按%切換_

_

成對跳躍%還可以用在

● [ ]● #ifdef …. #endif

切回上次游標位置

①游標在這邊,按[[

②游標移動了

_

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

結論

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

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

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

延伸作業

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

參考資料

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

programmers/

Recommended