Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Trace 程式碼之皮
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Wen_Liao
November 24, 2014
Technology
0
910
Trace 程式碼之皮
Wen_Liao
November 24, 2014
Tweet
Share
More Decks by Wen_Liao
See All by Wen_Liao
COSCUP-2020-Linux 軟體組裝工和他的工具們
wen_liao
2
1.5k
開放街圖 自助旅行的好幫手
wen_liao
0
1.3k
GNU AS簡介
wen_liao
0
1.2k
UPnP 1.0 簡介
wen_liao
0
1.1k
自由軟體和 Richard Stallman
wen_liao
0
2.3k
Hello world在那邊?背景說明 0
wen_liao
0
770
A successful Git branching model 導讀
wen_liao
0
690
GNU ld的linker script簡介
wen_liao
0
1.4k
淺談Debian套件打包
wen_liao
0
650
Other Decks in Technology
See All in Technology
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
130
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
1.1k
20260204_Midosuji_Tech
takuyay0ne
1
160
1,000 にも届く AWS Organizations 組織のポリシー運用をちゃんとしたい、という話
kazzpapa3
0
180
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.6k
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
270
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
110
22nd ACRi Webinar - ChipTip Technology Eric-san's slide
nao_sumikawa
0
100
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
260
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
480
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
187
22k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
120
How STYLIGHT went responsive
nonsquared
100
6k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.3k
Automating Front-end Workflow
addyosmani
1371
200k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
780
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
68
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
58
Transcript
Trace 程式碼之皮 Wen Liao
Disclaimer 投影片資料為作者整理資料及個人意見,沒有經 過嚴謹確認,請讀者自行斟酌
目標 分享在Linux 下使用編輯器 trace 程式碼的技巧
測試環境: OS
測試環境: 編輯器
動機 • 菜鳥的痛苦,看不懂別人的程式碼。 • 花時間時間在找尋 ◦ 這變數誰在用的? ◦ 呼叫的這個函數到在那邊實作? ◦
這個函數是誰在呼叫的? ◦ 我找到的變數到底是在哪個函數內? ◦ ...
編輯器也是有效率高低的 • 找出現在游標的變數會被誰呼叫? ◦ 菜鳥式:以gedit為例 ▪ 游標移動到Search,按一下滑鼠左鍵 ▪ 選Find,從鍵盤輸入要找的變數名稱 ▪
游標移動到搜尋按鈕,看要往上找還是往下找 ◦ 非菜鳥式:以gedit為例 ▪ 複製變數,按ctrl + f,貼上 ▪ ctrl + g往下找, shift + crtl + g往上找 ◦ vim:單鍵搞定 ▪ * 自動幫你往下找,不用複製貼上變數名稱 ▪ # 自動幫你往上找,不用複製貼上變數名稱
我就喜歡用gedit慢慢 找,咬我啊
等你遇到一個檔案上萬行, 單一函數幾百行的時候就知 道厲害!
為什麼要用編輯器的進階功能? • 搜尋和定位是一種干擾 ◦ 你必須停下目前的思緒,找出下一筆資料才能夠繼續 思考。 • 這些功能能夠讓搜尋和定位這兩件事時間最 小化,切換程式思維的時間就會更少。
說明 • 本投影片只是vgod的文章:給程式設計師的 Vim入門圖解說明的註腳
範例程式,九九乘法表
快速找下一個相同字串 ①游標在這邊,按* ②游標移動了 _ _
快速找上一個相同字串 ①游標在這邊,按# ②游標移動了 _ _
馬上知道自己在哪個函數中 ①游標在這邊,按[[ ②游標移動了 _
直接跳到下一個函數 ①游標在這邊,按]] ②游標移動了 _
跳到目前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/