好的,这是一个复杂的问题,我一直在尝试追踪过去4个月中相当大的代码库中的错误,这只发生在valgrind不可用的平台上。
正在发生的是单个字节0x01正在写在一个奇怪的地方(当它发生时随机,但它似乎总是写在一小部分可能的地方,无论调试/发布或编译器用来)。我发现错误字节总是距离它破坏的对象的起始点80个字节。
无论如何,是否有可用于Visual Studio的工具或技巧或插件可以扫描整个代码库并列出从类开始偏移80字节的所有成员?
答案 0 :(得分:0)
如果它始终位于一致的位置,即在结构的特定实例中,则可以在初始化实例后设置断点,然后在内存更改时触发的特定地址上设置断点(I忘记了VS)中断点的实际名称。
这是一个非常方便的技术,可以找到写入不应该的位置的难以捉摸的棘手操作!