2
好吧,这是一个复杂的问题,我一直试图在过去4个月内在相当大的代码库中查找一个错误,只发生在valgrind不可用的平台上。查找所有类/结构的所有成员从类/结构的起始处偏移了N个字节?
发生了什么是一个单字节0x01正在写入一个奇怪的地方(随机发生,但它似乎总是写在一小堆可能的地方,不管调试/释放或哪个编译器被使用)。我发现错误字节始终离开它破坏的对象的起始位置80个字节。
无论如何,有什么工具或技巧或Visual Studio的插件,可以扫描整个代码库,并列出所有成员的80字节偏离他们的类的开始?
它不一定是80字节偏移量的成员。它可能很容易(也可能是)写入该字节的缓冲区溢出。想想`struct foo {char arr [10]; void bar(){arr [80] = 1; }};`。 – Xeo 2011-12-15 00:38:05
它的80个字节从一个类的开始不是从一个数组的开始,如果它是一个数组溢出或堆栈溢出,我期望损坏的字节前后的字节也是破坏的 – TylerGlaiel 2011-12-15 00:46:51