[討論] 如何尋找source code

看板C_and_CPP作者 (小星)時間13年前 (2012/08/12 11:24), 編輯推噓4(409)
留言13則, 7人參與, 最新討論串1/1
HI大家好 小弟有個疑問想請教各位 當你使用了某個library中的某個function 想去找他的source code 請問你們會打什麼指令? where 跟 find 都是針對檔名 有時候檔名跟function一樣還好 但如果我找到了檔案 結果裡面只寫個extern..... !!!!!!崩潰!!!!!! 根本不知道它被定義在哪個檔案裡 偏偏BOSS希望我非常完整的找出某些function 是經由哪些system call從user level進入kernel so! 請問各位大大都是怎麼找的呢??? (google找到的不一定是kernel版本! 所以不是那麼準確) P.S. 偷偷說我在找NPTL (Native POSIX Thread Library)的啦XDDD 現在只找到futex.c這個system call檔案 但還差那些function各自的檔案 因為要查看她們call了哪些system call 例如pthread_create裡面是call了futex.c的哪一個function -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.89.52

08/12 19:37, , 1F
用source insight或者ctags/cscope之類的工具試試
08/12 19:37, 1F
謝謝你的建議 我晚點找找那是什麼

08/12 20:15, , 2F
grep -r XD
08/12 20:15, 2F
我GREP -R 然後就瘋狂洗頻崩潰了xdddd

08/12 20:20, , 3F
最怕的是有些function是透過macro generate的,很麻煩TT
08/12 20:20, 3F
雖然我不懂marco generate是什麼 不過聽起來就很麻煩XDDD ※ 編輯: didayo 來自: 118.169.89.52 (08/12 20:34)

08/12 20:40, , 4F
看起來是用 Linux, 試試 KScope 吧
08/12 20:40, 4F
謝謝建議!晚點TRY TRY ※ 編輯: didayo 來自: 118.169.89.52 (08/12 20:41)

08/12 20:42, , 5F
例如page的utility function: PageLRU
08/12 20:42, 5F

08/12 20:42, , 6F
#define TESTPAGEFLAG(uname, lname)
08/12 20:42, 6F

08/12 20:42, , 7F
static inline int Page##uname(const struct page *page)
08/12 20:42, 7F

08/12 20:43, , 8F
{ return test_bit(PG_##lname, &page->flags); }
08/12 20:43, 8F

08/12 21:15, , 9F
ack ./ XD
08/12 21:15, 9F

08/12 23:27, , 10F
我之前會用 find . | xargs grep -n "要找的東西"
08/12 23:27, 10F

08/12 23:48, , 11F
gtags,linux corss reference就是這樣產生的
08/12 23:48, 11F

08/12 23:48, , 12F
如果寫的太物件就無解,只能靠gdb
08/12 23:48, 12F

08/12 23:49, , 13F
cross
08/12 23:49, 13F
文章代碼(AID): #1G9vA3MC (C_and_CPP)