internal void Attach() { _environment.SetEventCallbacks(_eventCallbacks); jvmtiCapabilities capabilities = _environment.GetCapabilities(); _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.VMStart); _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.VMInit); _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.VMDeath); _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.ThreadStart); _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.ThreadEnd); _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.ClassLoad); _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.ClassPrepare); #if false _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.ClassFileLoadHook); _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.DynamicCodeGenerated); _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.DataDumpRequest); _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.ResourceExhausted); //_environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.DataResetRequest); if (capabilities.CanGenerateExceptionEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.Exception); } if (capabilities.CanGenerateExceptionEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.ExceptionCatch); } if (capabilities.CanGenerateSingleStepEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.SingleStep); } if (capabilities.CanGenerateFramePopEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.FramePop); } if (capabilities.CanGenerateBreakpointEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.Breakpoint); } if (capabilities.CanGenerateFieldAccessEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.FieldAccess); } if (capabilities.CanGenerateFieldModificationEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.FieldModification); } if (capabilities.CanGenerateMethodEntryEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.MethodEntry); } if (capabilities.CanGenerateMethodExitEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.MethodExit); } if (capabilities.CanGenerateNativeMethodBindEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.NativeMethodBind); } if (capabilities.CanGenerateCompiledMethodLoadEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.CompiledMethodLoad); } if (capabilities.CanGenerateCompiledMethodLoadEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.CompiledMethodUnload); } if (capabilities.CanGenerateMonitorEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.MonitorWait); } if (capabilities.CanGenerateMonitorEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.MonitorWaited); } if (capabilities.CanGenerateMonitorEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.MonitorContendedEnter); } if (capabilities.CanGenerateMonitorEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.MonitorContendedEntered); } if (capabilities.CanGenerateGarbageCollectionEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.GarbageCollectionStart); } if (capabilities.CanGenerateGarbageCollectionEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.GarbageCollectionFinish); } if (capabilities.CanGenerateObjectFreeEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.ObjectFree); } if (capabilities.CanGenerateVmObjectAllocEvents) { _environment.SetEventNotificationMode(JvmEventMode.Enable, JvmEventType.VMObjectAlloc); } #endif }