public string GetEntryPoint(ProcessPlatform processPlatform, bool fullPath) { string entryPoint = string.Empty; if (string.IsNullOrEmpty(_entryPoint)) { switch (processPlatform) { case ProcessPlatform.AnyCPU: entryPoint = _entryPoint; break; case ProcessPlatform.I386: entryPoint = _entryPoint32; break; case ProcessPlatform.X64: entryPoint = _entryPoint64; break; } } else { entryPoint = _entryPoint; } if (string.IsNullOrEmpty(entryPoint)) { throw new TempException(); } if (fullPath) { entryPoint = Path.Combine(BaseDirectory, entryPoint); } return(entryPoint); }
public SessionSettings Handle(Guid configurationUid, int processId, ProcessPlatform processPlatform, uint profilingBeginTime, Guid agentApplicationUid) { Configuration configuration = (Configuration)_configurations[configurationUid]; if (configuration == null) { throw new ConfigurationNotFoundException(configurationUid); } ConfigurationSettings configurationSettings = configuration.ConfigurationSettings; IProfilingTarget profilingTarget = _profilingTargets[configurationSettings.ProfilingTargetSettings.Uid]; IProfilingTargetAdapter profilingTargetAdapter = profilingTarget.GetSafeAdapter(); bool canStartProfiling = profilingTargetAdapter.CanStartProfiling(configurationSettings, processId); if (!canStartProfiling) { throw new TempException("Target process is not supported"); } ActualizeConfigurationSettings(configurationSettings, processPlatform); Session session = (Session)_sessions.Create(configuration); session.StartProfiling(processId, agentApplicationUid, profilingBeginTime); SessionSettings sessionSettings = new SessionSettings(session.Uid, configurationSettings.ProfilingTargetSettings, configurationSettings.FrameworksSettings, configurationSettings.ProfilingTypesSettings, configurationSettings.GatewaySettings); sessionSettings.Validate(); profilingTarget.GetSafeAdapter().ProfilingStarted(configurationSettings, sessionSettings, processId); return(sessionSettings); }
public T Load <T>(ExportDefinition definition, ProcessPlatform platform) { _assemblyResolver.RegisterPath(definition.BaseDirectory); string entryPoint = definition.GetEntryPoint(platform, false); return(LoadAndInitialize <T>(entryPoint)); }
public string GetAgentDll(ProcessPlatform processPlatform) { VerifyDisposed(); ExportDefinition definition = Definition.Exports.FindByApplication(Constants.ApplicationCodeName.Agent); string entryPoint = definition.GetEntryPoint(processPlatform, true); return(entryPoint); }
public string GetAgentDll(ProcessPlatform processPlatform) { return(Execute(() => RemoteObject.GetAgentDll(processPlatform))); }
private void ActualizeConfigurationSettings(ConfigurationSettings configurationSettings, ProcessPlatform processPlatform) { //Actualize profiling target settings IProfilingTarget profilingTarget = _profilingTargets[configurationSettings.ProfilingTargetSettings.Uid]; if (profilingTarget.HasAgent) { configurationSettings.ProfilingTargetSettings.AgentDll = profilingTarget.GetAgentDll(processPlatform); } //Actualize frameworks settings foreach (FrameworkSettings frameworkSettings in configurationSettings.FrameworksSettings) { IFramework framework = _frameworks[frameworkSettings.Uid]; if (framework.HasAgent) { frameworkSettings.AgentDll = framework.GetAgentDll(processPlatform); } } //Actualize profiling types settings foreach (ProfilingTypeSettings profilingTypeSettings in configurationSettings.ProfilingTypesSettings) { IProfilingType profilingType = _profilingTypes[profilingTypeSettings.Uid]; if (profilingType.HasAgent) { profilingTypeSettings.AgentDll = profilingType.GetAgentDll(processPlatform); } profilingTypeSettings.Dependencies = profilingType.Definition.Dependencies.Select(x => x.Uid).ToArray(); profilingTypeSettings.FrameworkUid = profilingType.Definition.FrameworkUid; } }