gpt4 book ai didi

c# - 使用 C++ 调试器作为反射替代

转载 作者:行者123 更新时间:2023-11-30 02:08:20 24 4
gpt4 key购买 nike

这个问题与this one I asked earlier this week有些相关.我仍在处理 C++ 无法正确反射(reflect)其自身代码的问题。现在,虽然我遇到了几个以某种方式尝试添加此功能的库,但我想问一下是否无法使用更容易获得和广泛使用(即更易于实现)的方法来实现我需要做的事情。

我需要的基本上是对象实例在某个时间点的快照。它们可以有子对象(即一个对象“具有”一个或多个其他对象的某种结构),但基本上就是这样。现在,虽然反射似乎是一个显而易见的选择,但由于项目总是用 C++ 编码,所以这几乎被排除在外了。但是,调试器似乎可以满足我的需要(在某个点停止程序并告诉我当前内存中的实例),所以我觉得我应该能够使用简单的调试技术来实现某种信息提取,如可以假定给定项目的代码可用。我的程序中的工作流程可能看起来像

  1. 在 Debug模式下编译c++代码
  2. 创建并附加调试器
  3. 设置断点(据我所知,该方法调用指示已创建所有需要的实例)
  4. 运行并检查特定类(及其继承类型)的实例(和子实例),提取此信息以供进一步处理

虽然这基本上是我在调试时通常做的事情,但我一直无法找到有关如何从另一个程序中自动执行此操作的任何信息。这将具有实现某种有限反射的优势,而无需任何进一步的库或代码更改。那么,有什么方法——最好是在 Java、C# 或 C++ 中,因为我最熟悉这些——只加载和编译 VS 解决方案或执行 makefile 并执行上面给出的步骤?我一直在寻找很多告诉我如何使用调试器的页面,但这在这里真的没有用......

感谢您的帮助。

最佳答案

如果 Visual Studio 不是必须的,您可以看看 GDB .这个调试器可以通过编程方式控制,它实际上被一些调试器 GUI 使用,所以你应该能够用它执行步骤 2-4。对于第一步,在这种情况下显而易见的选择是 gcc。

关于c# - 使用 C++ 调试器作为反射替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7012735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com