예제 #1
0
 internal BoundBreakpoint(PendingBreakpoint parent, TupleValue bindinfo)
 {
     // CLRDBG TODO: Support clr addresses for breakpoints
     this.Addr         = bindinfo.TryFindAddr("addr") ?? 0;
     this.FunctionName = bindinfo.TryFindString("func");
     this.HitCount     = 0;
     _parent           = parent;
     _textPosition     = MITextPosition.TryParse(bindinfo);
 }
예제 #2
0
        private ThreadContext CreateContext(TupleValue frame)
        {
            ulong?         pc           = frame.TryFindAddr("addr");
            MITextPosition textPosition = MITextPosition.TryParse(this._debugger, frame);
            string         func         = frame.TryFindString("func");
            uint           level        = frame.FindUint("level");
            string         from         = frame.TryFindString("from");

            return(new ThreadContext(pc, textPosition, func, level, from));
        }
예제 #3
0
        }                                                           // name as it appears in the debug symbols

        internal BoundBreakpoint(PendingBreakpoint parent, TupleValue bindinfo)
        {
            // CLRDBG TODO: Support clr addresses for breakpoints
            this.Addr             = bindinfo.TryFindAddr("addr") ?? 0;
            this.FunctionName     = bindinfo.TryFindString("func");
            this.Enabled          = bindinfo.TryFindString("enabled") == "n" ? false : true;
            this.HitCount         = 0;
            this.CompiledFileName = bindinfo.Contains("fullname") ? bindinfo.FindString("fullname") : bindinfo.TryFindString("file");
            _parent       = parent;
            _textPosition = MITextPosition.TryParse(parent.DebuggedProcess, bindinfo);
        }
예제 #4
0
        internal BoundBreakpoint(PendingBreakpoint parent, ulong addr, /*optional*/ TupleValue frame)
        {
            Addr     = addr;
            HitCount = 0;
            _parent  = parent;

            if (frame != null)
            {
                this.FunctionName = frame.TryFindString("func");
                _textPosition     = MITextPosition.TryParse(frame);
            }
        }
예제 #5
0
        internal BoundBreakpoint(PendingBreakpoint parent, ulong addr, /*optional*/ TupleValue frame, string bkptno)
        {
            Addr        = addr;
            HitCount    = 0;
            Enabled     = true;
            this.Number = bkptno;
            _parent     = parent;

            if (frame != null)
            {
                this.FunctionName = frame.TryFindString("func");
                _textPosition     = MITextPosition.TryParse(parent.DebuggedProcess, frame);
            }
        }
예제 #6
0
        private ThreadContext CreateContext(TupleValue frame)
        {
            ulong?pc = frame.TryFindAddr("addr");

            // don't report source line info for modules marked as IgnoreSource
            bool ignoreSource = false;

            if (pc != null)
            {
                var module = _debugger.FindModule(pc.Value);
                if (module != null && module.IgnoreSource)
                {
                    ignoreSource = true;
                }
            }
            MITextPosition textPosition = !ignoreSource?MITextPosition.TryParse(this._debugger, frame) : null;

            string func  = frame.TryFindString("func");
            uint   level = frame.FindUint("level");
            string from  = frame.TryFindString("from");

            return(new ThreadContext(pc, textPosition, func, level, from));
        }