如何打印共享库中定义的函数的堆栈回溯?

时间:2018-11-03 04:51:45

标签: c++ c linux

我正在优化某些代码的性能,发现第三方共享库中func()的调用每隔几分钟就会太慢。例如,如果我在一个循环中调用了10次,则第一个调用与其他调用相比非常慢。几分钟后,我重复了相同的操作并获得了相同的结果。我怀疑根本原因是缓存丢失(数据和指令)。因此,如果我可以在调用此函数之前加载指令以缓存,那么该函数的第一次调用可能会比以前更快。

我计划在调用之前使用memcpy()访问func()的地址。但是问题是func()调用了也在共享库中定义的其他函数,而我无法访问这些函数的地址。

根据以下问题:How to make backtrace()/backtrace_symbols() print the function names?,我知道backtrace() / backtrace_symbols()可用于打印堆栈回溯,但是在第三方共享中是否可以打印函数调用的堆栈回溯库?

顺便说一句:感谢您提供有关预加载要缓存的指令的建议。

0 个答案:

没有答案