【发布时间】:2018-07-25 16:18:12
【问题描述】:
我对 c++ 还很陌生,并且真的有兴趣了解更多信息。已经读了不少。最近发现了 init/fini elf 部分。 我开始想知道是否以及如何使用 init 部分来预填充将在运行时使用的对象。比如说你想要 将性能测量添加到您的代码中,记录时间、文件名、行号,也许还有一些 ID(ex 的单调递增 int)或名称。 例如,您可以放置:
PROBE(0,"EventProcessing",__FILE__,__LINE__)
...... //process event
PROBE(1,"EventProcessing",__FILE__,__LINE__)
......//different processing on same event
PROBE(2,"EventProcessing",__FILE__,__LINE__)
PROBE 可能是一些宏,它填充包含此数据的结构(可能在数组/列表等上,使用 id 作为索引器)。 是否有可能在 init 部分中有代码可以为每个 PROBE 预填充所有这些数据(当然时间除外),因此只需要在运行时检索/复制时间?
据我所知__attribute__((constructor))不能应用于成员函数?
我最初的想法是创建某种 每个节点指向每个探针的链表和 init 部分中的代码可以迭代它以填充 id、文件、行等,但是 这个想法假设我可以使用一个可以在“init”部分运行的成员函数,但这似乎是不可能的。任何提示表示赞赏!
【问题讨论】:
标签: c++ gcc assembly elf dynamic-linking