public void Events(SuspendPolicy suspend_policy, EventInfo[] events)
        {
            var l = new List <Event> ();

            for (int i = 0; i < events.Length; ++i)
            {
                EventInfo ei        = events [i];
                int       req_id    = ei.ReqId;
                long      thread_id = ei.ThreadId;
                long      id        = ei.Id;
                long      loc       = ei.Location;

                switch (ei.EventType)
                {
                case EventType.VMStart:
                    vm.notify_vm_event(EventType.VMStart, suspend_policy, req_id, thread_id, null, 0);

                    break;

                case EventType.VMDeath:
                    vm.notify_vm_event(EventType.VMDeath, suspend_policy, req_id, thread_id, null, ei.ExitCode);
                    break;

                case EventType.ThreadStart:
                    vm.InvalidateThreadCache();
                    l.Add(new ThreadStartEvent(vm, req_id, id));
                    break;

                case EventType.ThreadDeath:
                    vm.GetThread(id).InvalidateFrames();
                    vm.InvalidateThreadCache();
                    l.Add(new ThreadDeathEvent(vm, req_id, id));
                    break;

                case EventType.AssemblyLoad:
                    vm.InvalidateAssemblyCaches();
                    l.Add(new AssemblyLoadEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.AssemblyUnload:
                    vm.InvalidateAssemblyCaches();
                    l.Add(new AssemblyUnloadEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.TypeLoad:
                    l.Add(new TypeLoadEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.MethodEntry:
                    l.Add(new MethodEntryEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.MethodExit:
                    l.Add(new MethodExitEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.Breakpoint:
                    l.Add(new BreakpointEvent(vm, req_id, thread_id, id, loc));
                    break;

                case EventType.Step:
                    l.Add(new StepEvent(vm, req_id, thread_id, id, loc));
                    break;

                case EventType.Exception:
                    l.Add(new ExceptionEvent(vm, req_id, thread_id, id, loc));
                    break;

                case EventType.AppDomainCreate:
                    l.Add(new AppDomainCreateEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.AppDomainUnload:
                    l.Add(new AppDomainUnloadEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.UserBreak:
                    l.Add(new UserBreakEvent(vm, req_id, thread_id));
                    break;

                case EventType.UserLog:
                    l.Add(new UserLogEvent(vm, req_id, thread_id, ei.Level, ei.Category, ei.Message));
                    break;
                }
            }

            if (l.Count > 0)
            {
                vm.queue_event_set(new EventSet(vm, suspend_policy, l.ToArray()));
            }
        }
Beispiel #2
0
        public void Events(SuspendPolicy suspend_policy, EventInfo[] events)
        {
            var l = new List <Event> ();

            for (int i = 0; i < events.Length; ++i)
            {
                EventInfo ei        = events [i];
                int       req_id    = ei.ReqId;
                long      thread_id = ei.ThreadId;
                long      id        = ei.Id;
                long      loc       = ei.Location;

                switch (ei.EventType)
                {
                case EventType.VMStart:
                    vm.notify_vm_event(EventType.VMStart, suspend_policy, req_id, thread_id, null);

                    break;

                case EventType.VMDeath:
                    vm.notify_vm_event(EventType.VMDeath, suspend_policy, req_id, thread_id, null);
                    break;

                case EventType.ThreadStart:
                    l.Add(new ThreadStartEvent(vm, req_id, id));
                    break;

                case EventType.ThreadDeath:
                    l.Add(new ThreadDeathEvent(vm, req_id, id));
                    break;

                case EventType.AssemblyLoad:
                    l.Add(new AssemblyLoadEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.AssemblyUnload:
                    l.Add(new AssemblyUnloadEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.TypeLoad:
                    l.Add(new TypeLoadEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.MethodEntry:
                    l.Add(new MethodEntryEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.MethodExit:
                    l.Add(new MethodExitEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.Breakpoint:
                    l.Add(new BreakpointEvent(vm, req_id, thread_id, id, loc));
                    break;

                case EventType.Step:
                    l.Add(new StepEvent(vm, req_id, thread_id, id, loc));
                    break;

                case EventType.Exception:
                    l.Add(new ExceptionEvent(vm, req_id, thread_id, id, loc));
                    break;

                case EventType.AppDomainCreate:
                    l.Add(new AppDomainCreateEvent(vm, req_id, thread_id, id));
                    break;

                case EventType.AppDomainUnload:
                    l.Add(new AppDomainUnloadEvent(vm, req_id, thread_id, id));
                    break;

                default:
                    break;
                }
            }

            if (l.Count > 0)
            {
                vm.queue_event_set(new EventSet(vm, suspend_policy, l.ToArray()));
            }
        }
Beispiel #3
0
 public void VMStart(int req_id, long thread_id, string vm_uri)
 {
     vm.notify_vm_event(EventType.VMStart, req_id, thread_id, vm_uri);
 }