示例#1
0
        public JavaDebugLocationPendingBreakpoint(JavaDebugEngine engine, BreakpointRequestInfo requestInfo)
        {
            Contract.Requires <ArgumentNullException>(engine != null, "engine");
            Contract.Requires <ArgumentNullException>(requestInfo != null, "requestInfo");
            Contract.Requires <ArgumentException>(requestInfo.Location != null);
            Contract.Requires <ArgumentException>(requestInfo.Location.LocationType == enum_BP_LOCATION_TYPE.BPLT_CODE_FILE_LINE);

            _engine      = engine;
            _requestInfo = requestInfo;

            _condition = requestInfo.Condition;
            _passCount = requestInfo.PassCount;
        }
        public JavaDebugLocationPendingBreakpoint(JavaDebugEngine engine, BreakpointRequestInfo requestInfo)
        {
            Contract.Requires<ArgumentNullException>(engine != null, "engine");
            Contract.Requires<ArgumentNullException>(requestInfo != null, "requestInfo");
            Contract.Requires<ArgumentException>(requestInfo.Location != null);
            Contract.Requires<ArgumentException>(requestInfo.Location.LocationType == enum_BP_LOCATION_TYPE.BPLT_CODE_FILE_LINE);

            _engine = engine;
            _requestInfo = requestInfo;

            _condition = requestInfo.Condition;
            _passCount = requestInfo.PassCount;
        }
        internal void InitializeDebuggerChannel(JavaDebugEngine debugEngine, IDebugEventCallback2 callback)
        {
            Contract.Requires <ArgumentNullException>(debugEngine != null, "debugEngine");
            Contract.Requires <ArgumentNullException>(callback != null, "callback");

            _debugEngine = debugEngine;
            _callback    = callback;

            var connector = new LocalDebuggingAttachingConnector();

            Dictionary <string, IConnectorArgument> arguments = new Dictionary <string, IConnectorArgument>();

            string argumentName = "pid";
            IConnectorIntegerArgument defaultArgument = (IConnectorIntegerArgument)connector.DefaultArguments[argumentName];
            IConnectorIntegerArgument argument        = new ConnectorIntegerArgument(defaultArgument, (int)_process.GetPhysicalProcessId().dwProcessId);

            arguments.Add(argumentName, argument);

            argumentName = "sourcePaths";
            IConnectorStringArgument defaultPathsArgument = (IConnectorStringArgument)connector.DefaultArguments[argumentName];
            List <string>            sourcePaths          = GetSourcePaths();
            IConnectorStringArgument stringArgument       = new ConnectorStringArgument(defaultPathsArgument, string.Join(";", sourcePaths));

            arguments.Add(argumentName, stringArgument);

            connector.AttachComplete += HandleAttachComplete;
            _virtualMachine           = connector.Attach(arguments);

            IVirtualMachineEvents events = _virtualMachine.GetEventQueue() as IVirtualMachineEvents;

            if (events != null)
            {
                events.VirtualMachineStart     += HandleVirtualMachineStart;
                events.VirtualMachineDeath     += HandleVirtualMachineDeath;
                events.SingleStep              += HandleSingleStep;
                events.Breakpoint              += HandleBreakpoint;
                events.MethodEntry             += HandleMethodEntry;
                events.MethodExit              += HandleMethodExit;
                events.MonitorContendedEnter   += HandleMonitorContendedEnter;
                events.MonitorContendedEntered += HandleMonitorContendedEntered;
                events.MonitorContendedWait    += HandleMonitorContendedWait;
                events.MonitorContendedWaited  += HandleMonitorContendedWaited;
                events.Exception         += HandleException;
                events.ThreadStart       += HandleThreadStart;
                events.ThreadDeath       += HandleThreadDeath;
                events.ClassPrepare      += HandleClassPrepare;
                events.ClassUnload       += HandleClassUnload;
                events.FieldAccess       += HandleFieldAccess;
                events.FieldModification += HandleFieldModification;
            }
        }
示例#4
0
        internal void InitializeDebuggerChannel(JavaDebugEngine debugEngine, IDebugEventCallback2 callback)
        {
            Contract.Requires<ArgumentNullException>(debugEngine != null, "debugEngine");
            Contract.Requires<ArgumentNullException>(callback != null, "callback");

            _debugEngine = debugEngine;
            _callback = callback;

            var connector = new LocalDebuggingAttachingConnector();

            Dictionary<string, IConnectorArgument> arguments = new Dictionary<string, IConnectorArgument>();

            string argumentName = "pid";
            IConnectorIntegerArgument defaultArgument = (IConnectorIntegerArgument)connector.DefaultArguments[argumentName];
            IConnectorIntegerArgument argument = new ConnectorIntegerArgument(defaultArgument, (int)_process.GetPhysicalProcessId().dwProcessId);
            arguments.Add(argumentName, argument);

            argumentName = "sourcePaths";
            IConnectorStringArgument defaultPathsArgument = (IConnectorStringArgument)connector.DefaultArguments[argumentName];
            List<string> sourcePaths = GetSourcePaths();
            IConnectorStringArgument stringArgument = new ConnectorStringArgument(defaultPathsArgument, string.Join(";", sourcePaths));
            arguments.Add(argumentName, stringArgument);

            connector.AttachComplete += HandleAttachComplete;
            _virtualMachine = connector.Attach(arguments);

            IVirtualMachineEvents events = _virtualMachine.GetEventQueue() as IVirtualMachineEvents;
            if (events != null)
            {
                events.VirtualMachineStart += HandleVirtualMachineStart;
                events.VirtualMachineDeath += HandleVirtualMachineDeath;
                events.SingleStep += HandleSingleStep;
                events.Breakpoint += HandleBreakpoint;
                events.MethodEntry += HandleMethodEntry;
                events.MethodExit += HandleMethodExit;
                events.MonitorContendedEnter += HandleMonitorContendedEnter;
                events.MonitorContendedEntered += HandleMonitorContendedEntered;
                events.MonitorContendedWait += HandleMonitorContendedWait;
                events.MonitorContendedWaited += HandleMonitorContendedWaited;
                events.Exception += HandleException;
                events.ThreadStart += HandleThreadStart;
                events.ThreadDeath += HandleThreadDeath;
                events.ClassPrepare += HandleClassPrepare;
                events.ClassUnload += HandleClassUnload;
                events.FieldAccess += HandleFieldAccess;
                events.FieldModification += HandleFieldModification;
            }
        }