Example #1
0
        public void TestFieldsMapfiles()
        {
            string       error;
            const string parentsPath = @"D:\Jerzy\WinDbgStuff\dumps\DumpSearch\DumpSearch.exe_160711_121816.map\DumpSearch.exe_160711_121816.FIELDPARENTINSTANCES[0].map";
            const string offsetsPath = @"D:\Jerzy\WinDbgStuff\dumps\DumpSearch\DumpSearch.exe_160711_121816.map\DumpSearch.exe_160711_121816.FIELDPARENTOFFSETS[0].map";
            ulong        fldAddr     = 0x00000002488cc8;

            var fieldInfos = FieldDependency.GetFieldOffsets(offsetsPath, out error);

            ulong[] fldAddresses  = fieldInfos.Item1;
            long[]  parentOffsets = fieldInfos.Item2;

            var ndx = Array.BinarySearch(fldAddresses, fldAddr);

            Assert.IsTrue(ndx >= 0);

            Assert.IsNull(error);
            using (var mmf = FieldDependency.GetFieldParentMap(parentsPath, "ParentInstances", out error))
            {
                KeyValuePair <ulong, int>[] parents = FieldDependency.GetFieldParents(mmf, parentOffsets[ndx], parentOffsets[ndx + 1], out error);
                Assert.IsNull(error);
            }
        }