Example #1
0
        //=========================================
        // allocMem
        //=========================================
        public void allocMem(uint pHeap, uint pBlock, uint blockSize, HaloWarsMem.BALContext context)
        {
            SymbolInfo.LookupInfo li = new SymbolInfo.LookupInfo();

            for (int i = 0; i < context.mBackTraceSize; i++)
            {
                HaloWarsMem.getSymbolInfo().lookup(context.mBackTrace[i], ref li);
                if (HaloWarsMem.getSymbolInfo().isIgnoreSymbol(Path.GetFileName(li.mFilename)))
                {
                    continue;
                }

                if (mBlockToFile.Contains(pBlock))
                {
                    GlobalErrors.addError("HeapAlloc : Multiple Allocations of block 0x" + pBlock.ToString("x") + " in heap 0x" + pHeap.ToString("x"));
                    return;
                }

                FileAlloc fa = (FileAlloc)mAllocations[li.mFilename];
                if (fa == null)
                {
                    fa = new FileAlloc(li.mFilename);
                    mAllocations.Add(li.mFilename, fa);
                }

                mBlockToFile.Add(pBlock, li.mFilename);
                fa.allocMem(pHeap, pBlock, blockSize, (uint)li.mLine, context);


                break;
            }

            mNumNews++;
        }
Example #2
0
        //=========================================
        // load
        //=========================================
        public bool load(uint lineNum, Hashtable BlockAllocs)
        {
            this.Text = " line :" + lineNum;

            //
            IDictionaryEnumerator _enumerator = BlockAllocs.GetEnumerator();

            while (_enumerator.MoveNext())
            {
                BlockAlloc block = (BlockAlloc)_enumerator.Value;


                SymbolInfo.LookupInfo li = new SymbolInfo.LookupInfo();

                string callstack = "";
                string spacing   = "";
                for (int i = block.mContext.mBackTraceSize - 1; i >= 0; i--)
                {
                    HaloWarsMem.getSymbolInfo().lookupImmediate(block.mContext.mBackTrace[i], ref li);

                    string shortName = Path.GetFileName(li.mFilename);
                    if (HaloWarsMem.getSymbolInfo().isIgnoreSymbol(shortName))
                    {
                        continue;
                    }

                    string displayString = "";
                    if (shortName == "?")
                    {
                        displayString = "unkown (..)";
                    }
                    else
                    {
                        displayString = shortName + "::" + li.mSymbol + " (line " + li.mLine + ") \n";
                    }
                    listBox1.Items.Add(spacing + displayString);

                    //if (lastNode != null)
                    //   lastNode = lastNode.Nodes.Add(displayString);
                    //else
                    //   lastNode = tv.Nodes.Add(displayString);

                    spacing += " ";
                }

                listBox1.Items.Add(" (" + MemoryNumber.convert(block.mBlockSize) + ")");


                listBox1.Items.Add("==========================================================");
                listBox1.Items.Add("==========================================================");
            }

            return(true);
        }