[問題] shared library 裡找不到 symbol name

看板C_and_CPP作者 (tte)時間11年前 (2012/12/08 14:41), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC, Linux 問題(Question): 我有一個 shared library (a.so), 只有 dynamic symbol table. 我想要寫個程式去找 a.so 裡的函數. 也就是說當有另一個程式 c 用到 a.so 時, 我想要從 c 正在執行的 address 反推回函數名. 可是因為 dynamic casting 和 name mangling (?), 很多函數就不見了. 我用 objdump --dynamic-syms, 就只有一些函數和 _Zxxxx 的 symbol name. 可是我用 objdump -S, 可以看到所有正確的函數名. 我也試過用 OProfile 去 sample 程式 c, 是可以看到正確的函數名. 請問我要怎個做才可以從 address 找到正確的函數名子呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 24.91.73.120

12/08 16:46, , 1F
看到 _Z 我只覺得你應該是用 c++ compile 編的吧???
12/08 16:46, 1F

12/08 16:49, , 3F
裡面有手刻的 address -> symbol 功能
12/08 16:49, 3F

12/08 16:58, , 4F
另外試試 objdump --dynamic-syms a.so |c++filt 吧
12/08 16:58, 4F
文章代碼(AID): #1Gmk4Dgg (C_and_CPP)