我试图在崩溃之前记录应用程序发出的调用,包括libc调用。我已经使用gcc中的-finstrument-functions
支持使用我自己的库,但我无法使用此工具构建glibc。
我在libc / configure中将-finstrument-functions
添加到libc_extra_cflags
,但构建失败,并且未定义引用__libc_multiple_libcs"当链接ld.so.
仅运行CFLAGS=-finstrument-functions ./configure
不起作用,因为配置测试失败,因为他们没有定义__cyg_profile_func_enter/_exit
。
我目前正试图弄清楚如何为每个模块添加检测(stdlib,io,string等)并查看libc / foo / Makefile' s应该可以使用例如CFLAGS_stdlib = -finstrument-functions
但该标志不会显示在gcc命令中。
有没有办法将每个模块的标志添加到glibc构建中,或者glibc是否知道不能使用-finstrument-functions?
答案 0 :(得分:1)
我试图在崩溃之前记录应用程序发出的调用,包括libc调用。
您可以使用ltrace跟踪应用程序对任何共享库(包括GLIBC)进行的调用。
已知glibc不能使用-finstrument-functions
非常。
如果你考虑一下,你__cyg_profile_func_enter
要做什么?它无法调用libc,或者你最终会进行无限递归。它可以使用直接系统调用,但它远非琐碎。