c - C中的自动进入退出跟踪

标签 c logging

我是否必须在所有 C 函数中添加进入和退出日志?

如果,那么有没有任何可能的方法来自动编写函数的进入和退出(类似于java中使用面向方面编程的自动进入/退出)。

我正在编写的应用程序时间紧迫,为每个函数添加进入/退出语句可能会延迟性能,并且还会使代码不可读。

最佳答案

C 不支持任何形式的内省(introspection)或通过运行时或虚拟机中的魔术自动执行操作;没有虚拟机,运行时支持基本上只是提供标准功能的“死”代码库。

正如 Subtwo 指出的那样,如果您想做某事(例如登录/退出),则必须完成,因此需要时间。您不能只是“隐藏”该惩罚,放入它的开销非常小。

标准的分析器可能会给你一些洞察力,通过对你的程序进行统计抽样以查看执行了哪些函数,但这不会给你调用顺序,只是你的程序在被抽样时执行代码的随机位置。

您或许可以求助于一些预处理器技巧,这是执行诸如日志记录之类的“样板”内容的常用方法,例如定义一些宏,然后将其放置在每个函数的入口/导出点。不过,您必须记住包含宏,并且执行日志记录的任何性能损失当然都会存在。

关于c - C中的自动进入退出跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/633813/

相关文章:

c - Scheme 和 C 协同工作

c++ - 如何使用 clang 和 llvm-link 链接库

java - 启用 Java 详细日志记录 (rt.jar)

ruby-on-rails - 在生产中禁用 Rails 路由日志

logging - 如何在 Elixir 中读取 HTTP 分块响应并向客户端发送分块响应?

c - 如何复制结构?

c - 返回函数中声明的数组返回C中局部变量的地址?

c++ - 如何计算精度为 E=0.0001 的序列 e^(-x) 之和?

c# - Serilog JsonFormatter 是否支持 Formatting.Indented?

java - 为什么只记录消息,而不记录完整模式?