我是否必须在所有 C 函数中添加进入和退出日志?
如果,那么有没有任何可能的方法来自动编写函数的进入和退出(类似于java中使用面向方面编程的自动进入/退出)。
我正在编写的应用程序时间紧迫,为每个函数添加进入/退出语句可能会延迟性能,并且还会使代码不可读。
最佳答案
C 不支持任何形式的内省(introspection)或通过运行时或虚拟机中的魔术自动执行操作;没有虚拟机,运行时支持基本上只是提供标准功能的“死”代码库。
正如 Subtwo 指出的那样,如果您想做某事(例如登录/退出),则必须完成,因此需要时间。您不能只是“隐藏”该惩罚,放入它的开销非常小。
标准的分析器可能会给你一些洞察力,通过对你的程序进行统计抽样以查看执行了哪些函数,但这不会给你调用顺序,只是你的程序在被抽样时执行代码的随机位置。
您或许可以求助于一些预处理器技巧,这是执行诸如日志记录之类的“样板”内容的常用方法,例如定义一些宏,然后将其放置在每个函数的入口/导出点。不过,您必须记住包含宏,并且执行日志记录的任何性能损失当然都会存在。
关于c - C中的自动进入退出跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/633813/