在C ++中转储局部变量

时间:2013-04-20 20:23:59

标签: c++ matlab debugging

我想编写一个函数来查找所有局部变量并将它们保存到光盘中。稍后,我想加载这些变量并调用/ debug函数,从中保存变量。目标是加速调试我的代码内部的函数。

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

2 个答案:

答案 0 :(得分:3)

您正在搜索reflector机制。

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

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

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

保存:

  • 打开文件
  • 将variable1,variable2,...的值写入文件
  • 关闭文件

加载:

  • 打开文件
  • 从文件中读取variable1,variable2,...并将它们存储到相应的变量
  • 关闭文件

答案 1 :(得分:0)

通话记录怎么样?寄存器中的值怎么样?是否要在函数的第一行或其他行恢复。

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

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

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