visual-studio - 如何在运行时根据地址确定 C++ 对象的类型?
问题描述
我想从内存地址确定对象的类型,这样我就可以在 VS Watch 窗口中应用正确的转换并查看对象。
我正在尝试在反汇编视图中进行调试,因为我自己的代码作为 DLL 加载到我没有源代码或 pdb 的现有 exe 中。
typeid 和 dynamic_cast 的存在让我希望有某种方法可以实现(可能以有限的方式)而无需任何额外的编码。
但是,如果解决方案包括修改我的代码,我很高兴,我可以访问所有类定义,尽管我不一定要更改其中一些的内存布局。
我还对对象的分配进行了覆盖,因此我有机会在这里为我自己的目的分配额外的内存,例如,在我可以放置某种名称标签的对象之前的 4 个字节。
解决方案
回答我自己的问题。我使用一个为跟踪分配而设计的系统解决了这个问题: http ://www.almostinfinite.com/memtrack.html 它是新的替代品,它将用分配的类型 id 标记所有分配(以及其他信息)。
推荐阅读
- amazon-web-services - 将时间戳附加到 builspec.yaml 文件中的 S3 存储桶文件夹
- kubernetes - Kubernetes ClusterIP 与无头服务场景
- mysql - 如何在 AWS 上将 RDS 可用区更改为同一区域内的不同可用区?
- java - 序列化在 main 中初始化的对象
- javascript - 在节点中使用 JEST 模拟类
- html - 滚动后如何使 DIV 拉伸到页面底部
- sequelize.js - Sequelize 的 Model.update() 的“值”参数应该是什么样子?
- python - 如何在 Pandas 中删除包含某些文本的行
- javascript - 使用解构从同一对象的属性中使用默认值缩短两个参数
- c# - 如何验证执行 SaveChangesAsync 时是否没有错误?