示例#1
0
        //============================================================================
        // enumLinesCallback
        //============================================================================
        bool enumLinesCallback(ref DbgHelp.SRCCODE_INFO LineInfo, IntPtr UserContext)
        {
            //  UserContext;

            // gXDBFileBuilder.addLine((DWORD)LineInfo->Address, LineInfo->LineNumber, LineInfo->FileName);
            LineDesc ld = new LineDesc();

            ld.mAddress  = (uint)LineInfo.Address;
            ld.mFilename = LineInfo.FileName;
            ld.mLine     = (short)LineInfo.LineNumber;
            mLineDat.Add(ld);

            return(true);
        }
示例#2
0
        //============================================================================
        // enumLinesCallback
        //============================================================================
        bool enumLinesCallback(ref DbgHelp.SRCCODE_INFO LineInfo, IntPtr UserContext)
        {
            int index = mFileNames.IndexOf(LineInfo.FileName);

            if (index == -1)
            {
                index = mFileNames.Count;
                mFileNames.Add(LineInfo.FileName);
            }

            LineDesc ld = new LineDesc();

            ld.mAddress       = (uint)LineInfo.Address;
            ld.mFilenameIndex = (uint)index;
            ld.mLine          = (short)LineInfo.LineNumber;



            return(mAddressHash.addAddress((uint)LineInfo.Address, ld));
        }
示例#3
0
        public bool lookupEnumerated(UInt32 address, ref LookupInfo info)
        {
            try
            {
                info.mAddress     = address;
                info.mLine        = -1;
                info.mFilename    = "?";
                info.mSymbol      = "?";
                info.mFoundLine   = false;
                info.mFoundSymbol = false;


                for (int i = 0; i < mSymbolDat.Count; i++)
                {
                    if (mSymbolDat[i].mAddress == address)
                    {
                        info.mFoundSymbol = true;
                        info.mSymbol      = mSymbolNames[(int)mSymbolDat[i].mNameIndex];
                        break;
                    }
                }


                {
                    LineDesc ld = (LineDesc)mAddressHash.getObjNearAddress(address);

                    if (ld != null)
                    {
                        info.mFoundLine = true;
                        info.mLine      = ld.mLine;
                        info.mFilename  = mFileNames[(int)ld.mFilenameIndex];
                        return(true);
                    }
                }
            }
            catch (Exception e)
            {
            }
            return(false);
        }