안녕하세요.
저는 QA입니다.
다름이 아니라, 프로그램 테스트 도중 갑자기 비정상종료 되었길래..
Windbg로 attack process 걸어서 증상 재현 후, Dump 파일을 생성하였습니다.
그리고 나서 DebugDiag로 먼저 덤프자동분석을 돌렸는데...
Report파일을 쭈욱 보다보니...
Previous .NET Exceptions Report (Exceptions in all .NET Heaps)
위 부분에서...
Stack Trace가 아래와 같이 나오더군요.
(Exception Type은 System.IndexOutOfRangeException 이고요.)
EMapControlLib.EMapEditorView.TypingOnlyNumber(System.Object, System.Windows.Input.TextCompositionEventArgs, Boolean, Boolean)
System.Windows.RoutedEventArgs.InvokeHandler(System.Delegate, System.Object)
System.Windows.RoutedEventHandlerInfo.InvokeHandler(System.Object, System.Windows.RoutedEventArgs)
System.Windows.EventRoute.InvokeHandlersImpl(System.Object, System.Windows.RoutedEventArgs, Boolean)
System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject, System.Windows.RoutedEventArgs)
System.Windows.UIElement.RaiseTrustedEvent(System.Windows.RoutedEventArgs)
System.Windows.Input.InputManager.ProcessStagingArea()
System.Windows.Input.InputManager.ProcessInput(System.Windows.Input.InputEventArgs)
System.Windows.Documents.TextStore.RaiseCompositionEvents(Int32 ByRef, Int32 ByRef)
System.Windows.Documents.TextStore.HandleCompositionEvents(Int32)
System.Windows.Documents.TextStore.GrantLockWorker(LockFlags)
System.Windows.Documents.TextStore.RequestLock(LockFlags, Int32 ByRef)
그리고 Call Stack은... 아래와 같이 나오고요.
.NET Call Stack
[[GCFrame]]
[[HelperMethodFrame_1OBJ] (System.Environment.FailFast)] System.Environment.FailFast(System.String)
PresentationFramework_ni!System.Windows.Documents.TextStore.VerifyTextStoreConsistency()+52
PresentationFramework_ni!System.Windows.Documents.TextStore.GrantLock()+54
PresentationFramework_ni!System.Windows.Documents.TextStore.GrantLockWorker(LockFlags)+12a
PresentationFramework_ni!System.Windows.Documents.TextStore.RequestLock(LockFlags, Int32 ByRef)+68
WindowsBase_ni!DomainBoundILStubClass.IL_STUB_COMtoCLR(Int32, IntPtr)+18
[[ComMethodFrame]]
WindowsBase_ni!DomainBoundILStubClass.IL_STUB_CLRtoCOM(TsLayoutCode, Int32)+b9
[[InlinedCallFrame] (MS.Win32.UnsafeNativeMethods+ITextStoreACPSink.OnLayoutChange)] MS.Win32.UnsafeNativeMethods+ITextStoreACPSink.OnLayoutChange(TsLayoutCode, Int32)
PresentationFramework_ni!System.Windows.Documents.TextStore.OnLayoutUpdated()+28
PresentationFramework_ni!System.Windows.Documents.TextEditor.OnTextViewUpdatedWorker(System.Object)+f7c2a4
WindowsBase_ni!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)+68
WindowsBase_ni!System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)+36
WindowsBase_ni!System.Windows.Threading.DispatcherOperation.InvokeImpl()+10c
mscorlib_ni!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+172
mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+15
mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+55
WindowsBase_ni!MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object)+d8
WindowsBase_ni!System.Windows.Threading.DispatcherOperation.Invoke()+62
WindowsBase_ni!System.Windows.Threading.Dispatcher.ProcessQueue()+1fd
WindowsBase_ni!System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)+6f
WindowsBase_ni!MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)+c4
WindowsBase_ni!MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)+84
WindowsBase_ni!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)+68
WindowsBase_ni!System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)+36
WindowsBase_ni!System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)+172
WindowsBase_ni!MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)+152
WindowsBase_ni!DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int64, Int32, Int64, Int64)+52
WindowsBase_ni!DomainBoundILStubClass.IL_STUB_PInvoke(System.Windows.Interop.MSG ByRef)+79
[[InlinedCallFrame] (MS.Win32.UnsafeNativeMethods.DispatchMessage)] MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSGByRef)
WindowsBase_ni!System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)+f5
PresentationFramework_ni!System.Windows.Application.RunDispatcher(System.Object)+71
PresentationFramework_ni!System.Windows.Application.RunInternal(System.Windows.Window)+8c
하지만 Stack Trace로는 소스라인이 나오지 않아...
Windbg로 .load sos clr 을 이용해서...
봤는데... kb 커맨드를 이용해서 스택을 봤는데..
Debug Diag의 call stack와 같이 나올뿐..
stack trace는 어떻게 보는지 알 수가 없더라고요.
만약 windbg에서 DebugDiag와 같이 Stack Trace를 볼 수 있다면...
EMapControlLib.EMapEditorView.TypingOnlyNumber(System.Object, System.Windows.Input.TextCompositionEventArgs, Boolean, Boolean)
위 부분에 대한 소스라인까지 볼 수 있는 방법이 따로 있는지요?
[최초 등록일: ]
[최종 수정일: 8/19/2019]