Пример #1
0
        void UpdateRow(object toReadObj)
        {
            ulong             toRead     = (ulong)toReadObj;
            DebugMemoryStream mem        = mConnection.NewMemoryStream();
            StringBuilder     resultName = new StringBuilder(string.Format("{0:X8}:", toRead));

            int width = 16;

            byte[] readBuf = new byte[width];

            mem.Seek((long)toRead, System.IO.SeekOrigin.Begin);

            int i, result = mRunning ? 0 : mem.Read(readBuf, 0, readBuf.Length);

            if (result == 0)
            {
                return;
            }

            for (i = 0; i < readBuf.Length; i++)
            {
                resultName.Append(string.Format(" {0:X2}", (int)readBuf[i]));
            }
            resultName.Append(" | ");
            for (i = 0; i < readBuf.Length; i++)
            {
                resultName.Append((!char.IsControl((char)readBuf[i]) && (int)readBuf[i] < 128) ? (char)readBuf[i] : '\xb7');
            }

            mStoredBytes[toRead] = new ListViewItem(resultName.ToString());
            UpdateMemoryWindow();
        }
Пример #2
0
        void TraceOneFrame(object dummy)
        {
            DebugMemoryStream mem = mConnection.NewMemoryStream();
            BinaryReader      rdr = new BinaryReader(mem);

            try
            {
                mem.Seek((long)mChaseEbpValue, SeekOrigin.Begin);
                ulong chaseEbpValue = rdr.ReadUInt32();
                ulong returnAddr    = rdr.ReadUInt32();
                lock (mStackFramesToAdd)
                {
                    mStackFramesToAdd.Add(returnAddr);
                }
                Invoke(Delegate.CreateDelegate(typeof(NoParamsDelegate), this, "DumpStackFrames"));
                if (chaseEbpValue != 0 && chaseEbpValue > mChaseEbpValue)
                {
                    mChaseEbpValue = chaseEbpValue;
                    ThreadPool.QueueUserWorkItem(TraceOneFrame);
                    return;
                }
            }
            catch (Exception)
            {
            }
            mInProgress = false;
        }
Пример #3
0
        void MemoryUpdateEvent(object sender, MemoryUpdateEventArgs args)
        {
            List <WeakReference> deadStreams = new List <WeakReference>();

            foreach (WeakReference memStreamRef in mMemoryReaders)
            {
                DebugMemoryStream memStream = memStreamRef.Target as DebugMemoryStream;

                if (memStream == null)
                {
                    deadStreams.Add(memStreamRef);
                    continue;
                }

                memStream.Update(args.Address, args.Memory);
            }
        }