2017-08-25 45 views
0

我試圖在崩潰之前記錄應用程序所做的調用,包括libc調用。我用我自己的庫在gcc中使用了-finstrument-functions支持,但是我不能用這個工具創建glibc。使用-finstrument-functions構建glibc

我在libc/configure中添加了-finstrument-functionslibc_extra_cflags,但是當連接ld.so時,構建失敗,並且「未定義引用__libc_multiple_libcs​​」。 只是運行CFLAGS=-finstrument-functions ./configure不起作用,因爲配置測試失敗,因爲它們沒有定義__cyg_profile_func_enter/_exit。我正在試圖找出如何添加每個模塊(stdlib,io,字符串等)的檢測和通過libc/foo/Makefile查看應該可以使用例如。 CFLAGS_stdlib = -finstrument-functions但該標誌不顯示在gcc命令中。

有沒有一種方法可以將每個模塊標誌添加到glibc版本,還是已知glibc不能與-finstrument-functions一起使用?

回答

1

我試圖記錄應用程序在崩潰之前所做的調用,包括libc調用。

您可以使用ltrace跟蹤應用程序對任何共享庫(包括GLIBC)所進行的調用。

是glibc的已知不與-finstrument-職能的工作

漂亮多了。

如果你考慮一下,你的__cyg_profile_func_enter要做什麼?它不能調用libc,否則你將以無限遞歸結束。可以使用直接的系統調用,但這遠非微不足道。