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