繁体   English   中英

在C ++中转储局部变量

[英]Dumping local variables in C++

我想编写一个函数,该函数将查找所有局部变量并将其保存到磁盘。 稍后,我要加载这些变量以及从中保存变量的调用/调试功能。 目的是加快代码深层功能的调试。

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

您正在寻找反射器机制。

在C ++中,没有任何反射器工具可以枚举变量,因此您不能像Matlab那样做。

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

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

保存:

  • 开启档案
  • 将变量1,变量2 ...的值写入文件
  • 关闭档案

装载:

  • 开启档案
  • 从文件中读取变量1,变量2,...并将其存储到相应的变量中
  • 关闭档案

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM