我正在爲我的應用程序編寫性能分析工具,並使用dladdr將函數指針轉換爲名稱。只要一切正常工作作爲即時通訊的調試,但只要我在釋放編譯(使用的XCode 5.1)的所有名稱轉換失敗並返回NULL例如:在版本中使用dladdr
#include <dlfcn.h>
int main(int argc, char **argv)
{
Dl_info info;
if(dladdr(main, &info) != 0)
{ fprintf(stderr, "%s\n", info.dli_sname); }
我想,我傳遞給C多編譯器標誌/ C++標誌:-export-dynamic -fPIC以及-Wl, - export-dynamic什麼都不起作用......有沒有一種方法可以繼續編譯優化並保留函數地址 - > dladdr的名稱轉換功能?
您是否嘗試過加入-rdynamic作爲一個連接器選項? – 2014-09-19 03:23:12
Arrgg ...就是這樣!我試過-rdynamic,但我把它放在C/C++標誌中,而不是連接器... – McBob 2014-09-19 03:40:00
這樣做!我已經將我的信息作爲正式答案。 – 2014-09-19 03:45:42