之前已经问过其他语言的这个问题:Python,PHP和JavaScript.
我想知道是否可以在C中执行此操作.我试图在执行期间的某个时刻获取我的函数中的所有变量的快照,然后在稍后的时间点将其与另一个快照进行比较.
编辑
快照可以是范围内所有变量及其当前值的列表.我可以手工编写代码,但我想知道是否有更快的方法.
Dig*_*oss 10
有语言功能吗? 没有.
它可以以独立于系统的方式完成吗?没有.
有一个简单的方法吗?没有.
可以通过一些努力以特定于系统的方式完成吗?是.
总而言之,没有好的方法也没有简单的方法,但如果你真的想要它可以做到.从广义上讲,程序是为了调试而编译的,然后在运行时打开图像文件,找出存在哪些变量以及它们的存储位置.最有可能的是,实现这一目标的实际方法是编写像gdb这样的调试器,并让它进行低级工作.
如果您的系统已经具有运行时回溯功能,那么您可以利用它.
另一种可能性:某些操作系统支持读取符号表的库函数.历史悠久的Unix和Mac OS X都有nlist(3). 某些版本的Linux和Solaris都有dlinfo(3). 一个名为nm(1)的 CLI工具(你可以popen(1)它)通常是可用的.