我正在用 C 语言构建一个共享库,其他程序使用它。有时,这些其他程序由于我的共享库中的一些错误而崩溃。在重现这些错误时,了解正在调用我的库的哪些函数、使用哪些参数以及以什么顺序调用对我来说非常有用。当然,我可以printf()
向所有函数添加调用,或者向所有函数添加断点,但我认为必须有更好的方法来确定这一点。
编辑:因为我在 OSX 上这样做,dtrace和相关的脚本dapptrace似乎很有希望。但是,在浏览了一些文档之后,我仍然有点迷茫。
比如说,我的库是/path/to/libmystuff.so并且我有一个链接到该库的程序测试。使用dtrace,我将如何显示驻留在libmystuff.so中的所有函数调用的列表?