查 C/C++ symbol 定義的方法
記一下目前習慣找 SYMBOL 定義的方法, 只是模糊的片段經驗, 日後再補充完整一些
用 gj
在命令列打: gj SYMBOL class 或 gj SYMBOL struct 找類別定義
找不到的話, 有可能 SYMBOL 是用 code-gen 或巨集產生的。
- 檢查一下 mkid 時有沒有漏掉 code-gen 的檔案, 再重建索引: $ mkid -m FILE_LIST ( 格式見 Language map - ID database utilities ) 可用 $ g++ -E TARGET.cpp -IINCLUDE_DIR 展開檔案, 再回頭看 SYMBOL 是否是巨集產生的。 另外可用 gj SYMBOL void 找函式定義 (針對無傳回值的情況), 或是 gj SYMBOL 再用 ".h" 過濾只留 header 檔。
Btw, 要找 symbol 被使用的地方的話, 就直接 gj SYMBOL。
- 用 gdb
在 gdb 裡用 ptype VAR 會列出 VAR 的型別資訊
2013-12-08 更新
後來依自己使用習慣在 gj 加了一些功能, 像是用 gj -d1 SYMBOL 找定義或宣告, 用 gj -s LITERAL 找可能的 symbol 名稱, 詳見 gj 在 github 上的說明。