Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / System.Runtime.DurableInstancing / System / Runtime / ExceptionTrace.cs / 1305376 / ExceptionTrace.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.Runtime { using System; using System.Diagnostics; using System.Globalization; using System.Runtime.CompilerServices; using System.Runtime.Interop; using System.Runtime.Versioning; using System.Security; using System.Runtime.Diagnostics; class ExceptionTrace { const ushort FailFastEventLogCategory = 6; string eventSourceName; public ExceptionTrace(string eventSourceName) { this.eventSourceName = eventSourceName; } public void AsInformation(Exception exception) { //Traces an informational trace message TraceCore.HandledException(Fx.Trace, exception); } public void AsWarning(Exception exception) { //Traces a warning trace message TraceCore.HandledExceptionWarning(Fx.Trace, exception); } public Exception AsError(Exception exception) { return TraceException(exception); } public Exception AsError(Exception exception, string eventSource) { return TraceException (exception, eventSource); } public ArgumentException Argument(string paramName, string message) { return TraceException (new ArgumentException(message, paramName)); } public ArgumentNullException ArgumentNull(string paramName) { return TraceException (new ArgumentNullException(paramName)); } public ArgumentNullException ArgumentNull(string paramName, string message) { return TraceException (new ArgumentNullException(paramName, message)); } public ArgumentException ArgumentNullOrEmpty(string paramName) { return this.Argument(paramName, SRCore.ArgumentNullOrEmpty(paramName)); } public ArgumentOutOfRangeException ArgumentOutOfRange(string paramName, object actualValue, string message) { return TraceException (new ArgumentOutOfRangeException(paramName, actualValue, message)); } // When throwing ObjectDisposedException, it is highly recommended that you use this ctor // [C#] // public ObjectDisposedException(string objectName, string message); // And provide null for objectName but meaningful and relevant message for message. // It is recommended because end user really does not care or can do anything on the disposed object, commonly an internal or private object. public ObjectDisposedException ObjectDisposed(string message) { // pass in null, not disposedObject.GetType().FullName as per the above guideline return TraceException (new ObjectDisposedException(null, message)); } public void TraceUnhandledException(Exception exception) { TraceCore.UnhandledException(Fx.Trace, exception); } TException TraceException (TException exception) where TException : Exception { return TraceException (exception, this.eventSourceName); } [ResourceConsumption(ResourceScope.Process)] [Fx.Tag.SecurityNote(Critical = "Calls 'System.Runtime.Interop.UnsafeNativeMethods.IsDebuggerPresent()' which is a P/Invoke method", Safe = "Does not leak any resource, needed for debugging")] [SecuritySafeCritical] TException TraceException (TException exception, string eventSource) where TException : Exception { TraceCore.ThrowingException(Fx.Trace, eventSource, exception); BreakOnException(exception); return exception; } [Fx.Tag.SecurityNote(Critical = "Calls into critical method UnsafeNativeMethods.IsDebuggerPresent and UnsafeNativeMethods.DebugBreak", Safe = "Safe because it's a no-op in retail builds.")] [SecuritySafeCritical] void BreakOnException(Exception exception) { #if DEBUG if (Fx.BreakOnExceptionTypes != null) { foreach (Type breakType in Fx.BreakOnExceptionTypes) { if (breakType.IsAssignableFrom(exception.GetType())) { // This is intended to "crash" the process so that a debugger can be attached. If a managed // debugger is already attached, it will already be able to hook these exceptions. We don't // want to simulate an unmanaged crash (DebugBreak) in that case. if (!Debugger.IsAttached && !UnsafeNativeMethods.IsDebuggerPresent()) { UnsafeNativeMethods.DebugBreak(); } } } } #endif } [MethodImpl(MethodImplOptions.NoInlining)] internal void TraceFailFast(string message) { EventLogger logger = null; #pragma warning disable 618 logger = new EventLogger(this.eventSourceName, Fx.Trace); #pragma warning restore 618 TraceFailFast(message, logger); } // Generate an event Log entry for failfast purposes // To force a Watson on a dev machine, do the following: // 1. Set \HKLM\SOFTWARE\Microsoft\PCHealth\ErrorReporting ForceQueueMode = 0 // 2. In the command environment, set COMPLUS_DbgJitDebugLaunchSetting=0 [MethodImpl(MethodImplOptions.NoInlining)] internal void TraceFailFast(string message, EventLogger logger) { if (logger != null) { try { string stackTrace = null; try { stackTrace = new StackTrace().ToString(); } catch (Exception exception) { stackTrace = exception.Message; if (Fx.IsFatal(exception)) { throw; } } finally { logger.LogEvent(TraceEventType.Critical, FailFastEventLogCategory, (uint)EventLogEventId.FailFast, message, stackTrace); } } catch (Exception ex) { logger.LogEvent(TraceEventType.Critical, FailFastEventLogCategory, (uint)EventLogEventId.FailFastException, ex.ToString()); if (Fx.IsFatal(ex)) { throw; } } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.Runtime { using System; using System.Diagnostics; using System.Globalization; using System.Runtime.CompilerServices; using System.Runtime.Interop; using System.Runtime.Versioning; using System.Security; using System.Runtime.Diagnostics; class ExceptionTrace { const ushort FailFastEventLogCategory = 6; string eventSourceName; public ExceptionTrace(string eventSourceName) { this.eventSourceName = eventSourceName; } public void AsInformation(Exception exception) { //Traces an informational trace message TraceCore.HandledException(Fx.Trace, exception); } public void AsWarning(Exception exception) { //Traces a warning trace message TraceCore.HandledExceptionWarning(Fx.Trace, exception); } public Exception AsError(Exception exception) { return TraceException (exception); } public Exception AsError(Exception exception, string eventSource) { return TraceException (exception, eventSource); } public ArgumentException Argument(string paramName, string message) { return TraceException (new ArgumentException(message, paramName)); } public ArgumentNullException ArgumentNull(string paramName) { return TraceException (new ArgumentNullException(paramName)); } public ArgumentNullException ArgumentNull(string paramName, string message) { return TraceException (new ArgumentNullException(paramName, message)); } public ArgumentException ArgumentNullOrEmpty(string paramName) { return this.Argument(paramName, SRCore.ArgumentNullOrEmpty(paramName)); } public ArgumentOutOfRangeException ArgumentOutOfRange(string paramName, object actualValue, string message) { return TraceException (new ArgumentOutOfRangeException(paramName, actualValue, message)); } // When throwing ObjectDisposedException, it is highly recommended that you use this ctor // [C#] // public ObjectDisposedException(string objectName, string message); // And provide null for objectName but meaningful and relevant message for message. // It is recommended because end user really does not care or can do anything on the disposed object, commonly an internal or private object. public ObjectDisposedException ObjectDisposed(string message) { // pass in null, not disposedObject.GetType().FullName as per the above guideline return TraceException (new ObjectDisposedException(null, message)); } public void TraceUnhandledException(Exception exception) { TraceCore.UnhandledException(Fx.Trace, exception); } TException TraceException (TException exception) where TException : Exception { return TraceException (exception, this.eventSourceName); } [ResourceConsumption(ResourceScope.Process)] [Fx.Tag.SecurityNote(Critical = "Calls 'System.Runtime.Interop.UnsafeNativeMethods.IsDebuggerPresent()' which is a P/Invoke method", Safe = "Does not leak any resource, needed for debugging")] [SecuritySafeCritical] TException TraceException (TException exception, string eventSource) where TException : Exception { TraceCore.ThrowingException(Fx.Trace, eventSource, exception); BreakOnException(exception); return exception; } [Fx.Tag.SecurityNote(Critical = "Calls into critical method UnsafeNativeMethods.IsDebuggerPresent and UnsafeNativeMethods.DebugBreak", Safe = "Safe because it's a no-op in retail builds.")] [SecuritySafeCritical] void BreakOnException(Exception exception) { #if DEBUG if (Fx.BreakOnExceptionTypes != null) { foreach (Type breakType in Fx.BreakOnExceptionTypes) { if (breakType.IsAssignableFrom(exception.GetType())) { // This is intended to "crash" the process so that a debugger can be attached. If a managed // debugger is already attached, it will already be able to hook these exceptions. We don't // want to simulate an unmanaged crash (DebugBreak) in that case. if (!Debugger.IsAttached && !UnsafeNativeMethods.IsDebuggerPresent()) { UnsafeNativeMethods.DebugBreak(); } } } } #endif } [MethodImpl(MethodImplOptions.NoInlining)] internal void TraceFailFast(string message) { EventLogger logger = null; #pragma warning disable 618 logger = new EventLogger(this.eventSourceName, Fx.Trace); #pragma warning restore 618 TraceFailFast(message, logger); } // Generate an event Log entry for failfast purposes // To force a Watson on a dev machine, do the following: // 1. Set \HKLM\SOFTWARE\Microsoft\PCHealth\ErrorReporting ForceQueueMode = 0 // 2. In the command environment, set COMPLUS_DbgJitDebugLaunchSetting=0 [MethodImpl(MethodImplOptions.NoInlining)] internal void TraceFailFast(string message, EventLogger logger) { if (logger != null) { try { string stackTrace = null; try { stackTrace = new StackTrace().ToString(); } catch (Exception exception) { stackTrace = exception.Message; if (Fx.IsFatal(exception)) { throw; } } finally { logger.LogEvent(TraceEventType.Critical, FailFastEventLogCategory, (uint)EventLogEventId.FailFast, message, stackTrace); } } catch (Exception ex) { logger.LogEvent(TraceEventType.Critical, FailFastEventLogCategory, (uint)EventLogEventId.FailFastException, ex.ToString()); if (Fx.IsFatal(ex)) { throw; } } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ColorKeyFrameCollection.cs
- TextHidden.cs
- CodeSnippetStatement.cs
- ReceiveContext.cs
- RequestQueryParser.cs
- WorkflowServiceBuildProvider.cs
- HtmlSelectionListAdapter.cs
- UIElement.cs
- HostingEnvironmentSection.cs
- DummyDataSource.cs
- LambdaCompiler.ControlFlow.cs
- BindableTemplateBuilder.cs
- WebPartHeaderCloseVerb.cs
- MultiBindingExpression.cs
- TransactionCache.cs
- SqlLiftIndependentRowExpressions.cs
- SettingsPropertyIsReadOnlyException.cs
- ZipArchive.cs
- WindowsImpersonationContext.cs
- BitArray.cs
- CorrelationRequestContext.cs
- TCEAdapterGenerator.cs
- SessionEndingEventArgs.cs
- TaiwanLunisolarCalendar.cs
- WhiteSpaceTrimStringConverter.cs
- ParsedAttributeCollection.cs
- WindowsSecurityTokenAuthenticator.cs
- UInt64Converter.cs
- Compensation.cs
- DefaultHttpHandler.cs
- ProtocolsSection.cs
- InvokeBinder.cs
- StandardOleMarshalObject.cs
- UrlMappingCollection.cs
- AnnotationMap.cs
- AsymmetricSignatureDeformatter.cs
- ClosureBinding.cs
- Invariant.cs
- SctClaimDictionary.cs
- Pair.cs
- RegularExpressionValidator.cs
- IssuedSecurityTokenParameters.cs
- XPathScanner.cs
- GridSplitterAutomationPeer.cs
- HtmlHead.cs
- XslException.cs
- ColorMap.cs
- PageContentAsyncResult.cs
- ExeContext.cs
- CompareInfo.cs
- SessionStateContainer.cs
- PagesSection.cs
- BlurEffect.cs
- TextShapeableCharacters.cs
- ChannelRequirements.cs
- DesignSurface.cs
- DBSqlParser.cs
- SlipBehavior.cs
- ScrollEvent.cs
- MessagePartDescription.cs
- AndCondition.cs
- MouseGestureValueSerializer.cs
- SingleTagSectionHandler.cs
- Set.cs
- HttpVersion.cs
- JsonQueryStringConverter.cs
- DependencyObjectPropertyDescriptor.cs
- AuthenticationModulesSection.cs
- NativeRecognizer.cs
- coordinatorscratchpad.cs
- MouseButtonEventArgs.cs
- ServiceNameElement.cs
- XmlSchemaProviderAttribute.cs
- ItemCollection.cs
- IFlowDocumentViewer.cs
- DataBindEngine.cs
- TextDecorationUnitValidation.cs
- CompositeCollectionView.cs
- TimelineGroup.cs
- EnumBuilder.cs
- BorderGapMaskConverter.cs
- GridViewRow.cs
- SynthesizerStateChangedEventArgs.cs
- LogicalChannel.cs
- QilVisitor.cs
- SpeechRecognitionEngine.cs
- ToolboxSnapDragDropEventArgs.cs
- XPathDocumentIterator.cs
- XPathDocument.cs
- ServiceOperation.cs
- AbsoluteQuery.cs
- WebUtil.cs
- namescope.cs
- InfoCardService.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- ErrorCodes.cs
- ToolTip.cs
- ChangeNode.cs
- Publisher.cs
- StateRuntime.cs