0

我想编写一个函数来查找所有局部变量并将它们保存到磁盘。稍后,我想加载这些变量和保存变量的调用/调试函数。目标是加快对我代码深处的函数的调试。

我在 Matlab 中使用了类似的技术,它允许保存整个工作区,然后加载它并继续。我可以在 C++ 中使用类似/相关的技术吗?

4

2 回答 2

3

您正在寻找反射器机制。

在 C++ 中没有任何反射器工具来枚举变量,所以你不能像 Matlab 那样做。

您应该在代码中手动创建数据结构并添加变量。然后做任何你想做的事。

在实践中,程序员将使用以下步骤:

保存:

  • 打开一个文件
  • 将变量1、变量2、...的值写入文件
  • 关闭文件

装载:

  • 打开文件
  • 从文件中读取 variable1, variable2, ... 并将它们存储到相应的变量中
  • 关闭文件
于 2013-04-20T20:26:19.267 回答
0

通话记录呢?寄存器中的值呢?你想在函数的第一行还是其他行继续。

您可以尝试编写堆栈,但这仅在没有变量具有构造函数或指向 malloc 内存的指针时才有效。

您可以使用 setjmp() 来获取寄存器中的所有值,并使用 longjmp() 来恢复它们。

如果您使用的是 Windows,则可以查看 DbgHelp API。它可能有一种枚举所有局部变量的方法。

于 2013-04-20T21:03:38.503 回答