是否有允许运行时结构内省的C语言工具?在运行时C结构内省
上下文是这样的: 我有一个响应外部事件的守护进程,并且对于每个事件我们都带着一个执行上下文结构(“context”)。上下文很大很混乱,并且包含对各种状态的引用。
事件处理完成后,我希望能够通过过滤器运行上下文,并且如果它符合某些条件集,请删除日志消息以帮助进行调试。但是,因为我希望将其用于现场调试,所以我不知道在运行时间之前过滤哪些条件是有用的。
我的理想解决方案将允许用户从本质上写出一个C风格的布尔表达式并让程序使用它。喜欢的东西:已被到处滥用
activate_filter context.response_time > 4.2 && context.event.event_type == foo_event
想法到目前为止,包括:
- 提供了一组有限的,我们知道如何访问字段。
- 将所有相关的结构包装在运行时生成自检工具的某种宏中。
- 编写一个知道哪里(版本化)头文件存在的python脚本,生成C代码并将其编译为一个dll,然后该守护程序将加载并用作过滤器。显然这种方法有一些额外的安全考虑。
在我开始一些疯狂的设计鹅追逐之前,有没有人知道这种事情在野外的例子?我穹顶了一些谷歌搜索,但没有提出太多。
没有内置的内省。你可以设计出近似自省的系统(静态定义的结构来描述其他结构),'sizeof'运算符和''中的'offsetof'宏可以提供帮助。类型编码是一个完全独立的bag'o'worms。 –
2015-01-09 21:52:07
你可能会发现[有没有在循环中打印'struct'成员的方法,而不用C中每个成员的名字?](http://stackoverflow.com/questions/27496245/is-there-a-way-to-print -struct-members-in-a-loop-without-naming-each-member-in -c/27497861#27497861)对你有帮助,否则你可能不会。 – 2015-01-09 21:55:55