我想编写一个函数来查找所有局部变量并将它们保存到光盘中。稍后,我想加载这些变量并调用/ debug函数,从中保存变量。目标是加速调试我的代码内部的函数。
我在Matlab中使用了类似的技术,它允许保存整个工作区,然后加载并继续。我可以在C ++中使用类似/相关的技术吗?
答案 0 :(得分:3)
您正在搜索reflector机制。
在C ++中,没有任何反射器工具来枚举变量,所以你不能像Matlab那样做。
您应该创建数据结构并在代码中手动添加变量。然后做你想做的事。
在实践中,程序员将使用以下步骤:
保存:
加载:
答案 1 :(得分:0)
通话记录怎么样?寄存器中的值怎么样?是否要在函数的第一行或其他行恢复。
您可以尝试编写堆栈,但只有在没有变量具有构造函数或指向malloc内存的指针时才有效。
您可以使用setjmp()获取寄存器中的所有值,使用longjmp()来恢复它们。
如果您使用的是Windows,则可以查看DbgHelp API。它可能有一种枚举所有局部变量的方法。