1

この WPF アプリケーションが与えられました。このプログラムをデバッグ モードで実行しようとすると、Windows1.xml に到達する前にクラッシュしました。後でリリース モードで実行してみましたが、正常に実行されました。それを機能させるには、「コードの最適化」をオンにする必要がありました。

注: ブレークポイント、デバッグからのステップ イン、スロー例外での停止は機能しません。

編集:例外はWPF(非常に人気があり、役に立たない)の一般的な例外でした:

{"アセンブリ 'VCell2、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null' で定義された 'Main' のインスタンスを作成できません。呼び出しのターゲットによって例外がスローされました。マークアップ ファイル 'Window1.xaml' でエラーが発生しました'行 1 位置 9."} Source="PresentationFramework" LineNumber=1 LinePosition=9

編集:内部 - 内部例外: {"指定されたモジュールが見つかりませんでした。(HRESULT からの例外: 0x8007007E)":null}

これが私が得ていたスタックトレースです:

   at System.Windows.Markup.XamlParseException.ThrowException(String message, Exception innerException, Int32 lineNumber, Int32 linePosition, Uri baseUri, XamlObjectIds currentXamlObjectIds, XamlObjectIds contextXamlObjectIds, Type objectType)
   at System.Windows.Markup.XamlParseException.ThrowException(ParserContext parserContext, Int32 lineNumber, Int32 linePosition, String message, Exception innerException)
   at System.Windows.Markup.BamlRecordReader.ThrowExceptionWithLine(String message, Exception innerException)
   at System.Windows.Markup.BamlRecordReader.CreateInstanceFromType(Type type, Int16 typeId, Boolean throwOnFail)
   at System.Windows.Markup.BamlRecordReader.GetElementAndFlags(BamlElementStartRecord bamlElementStartRecord, Object& element, ReaderFlags& flags, Type& delayCreatedType, Int16& delayCreatedTypeId)
   at System.Windows.Markup.BamlRecordReader.BaseReadElementStartRecord(BamlElementStartRecord bamlElementRecord)
   at System.Windows.Markup.BamlRecordReader.ReadElementStartRecord(BamlElementStartRecord bamlElementRecord)
   at System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord)
   at System.Windows.Markup.BamlRecordReader.Read(Boolean singleRecord)
   at System.Windows.Markup.TreeBuilderBamlTranslator.ParseFragment()
   at System.Windows.Markup.TreeBuilder.Parse()
   at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadBamlStreamWithSyncInfo(Stream stream, ParserContext pc)
   at System.Windows.Application.LoadComponent(Uri resourceLocator, Boolean bSkipJournaledProperties)
   at System.Windows.Application.DoStartup()
   at System.Windows.Application.<.ctor>b__0(Object unused)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at System.Threading.ExecutionContext.runTryCode(Object userData)
   at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter)
   at System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.Run()
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at System.Windows.Application.Run(Window window)
   at System.Windows.Application.Run()
   at VCell2.App.Main() in C:\Users\wandrus\Documents\Visual Studio 2008\Projects\VCell2\VCell2\obj\Debug\App.g.cs:line 0

編集windbgを実行してみました(これを正しく行っているかどうかわかりません)

ModLoad: 77310000 773b0000   C:\Windows\system32\ADVAPI32.dll
ModLoad: 76a30000 76adc000   C:\Windows\system32\msvcrt.dll
ModLoad: 76c60000 76c79000   C:\Windows\SYSTEM32\sechost.dll
ModLoad: 76ae0000 76b82000   C:\Windows\system32\RPCRT4.dll
ModLoad: 770c0000 77117000   C:\Windows\system32\SHLWAPI.dll
ModLoad: 76940000 7698e000   C:\Windows\system32\GDI32.dll
ModLoad: 76c80000 76d49000   C:\Windows\system32\USER32.dll
ModLoad: 778e0000 778ea000   C:\Windows\system32\LPK.dll
ModLoad: 77120000 771bd000   C:\Windows\system32\USP10.dll
ModLoad: 76ea0000 76ebf000   C:\Windows\system32\IMM32.DLL
ModLoad: 76b90000 76c5c000   C:\Windows\system32\MSCTF.dll
ModLoad: 6c1b0000 6c1b5000   C:\Windows\system32\avgrsstx.dll
ModLoad: 57310000 578a1000   C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
ModLoad: 756a0000 7573b000   C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4918_none_d089094c442eb5ff\MSVCR80.dll
ModLoad: 75c40000 76886000   C:\Windows\system32\shell32.dll
ModLoad: 773c0000 7751b000   C:\Windows\system32\ole32.dll
ModLoad: 75810000 7581b000   C:\Windows\system32\profapi.dll
ModLoad: 53de0000 548d8000   C:\Windows\assembly\NativeImages_v2.0.50727_32\mscorlib\70603943245265de9397091048337dda\mscorlib.ni.dll
ModLoad: 757a0000 757ac000   C:\Windows\system32\CRYPTBASE.dll
ModLoad: 744f0000 74530000   C:\Windows\system32\uxtheme.dll
ModLoad: 52ea0000 53639000   C:\Windows\assembly\NativeImages_v2.0.50727_32\System\ade9214f5bce88462742bce1278864c0\System.ni.dll
ModLoad: 57ae0000 57e0c000   C:\Windows\assembly\NativeImages_v2.0.50727_32\WindowsBase\c7663f3a74fb6aa480c60108634d285a\WindowsBase.ni.dll
ModLoad: 03eb0000 04a5b000   C:\Windows\assembly\NativeImages_v2.0.50727_32\PresentationCore\c79b7f336e6099b8c94081f975e9411e\PresentationCore.ni.dll
ModLoad: 55240000 55fec000   C:\Windows\assembly\NativeImages_v2.0.50727_32\PresentationFramewo#\7d80b7d912fbf0f7532f1b9adc235646\PresentationFramework.ni.dll
ModLoad: 00e50000 01255000   PresentationCore.dll
ModLoad: 00e50000 01255000   PresentationCore.dll
ModLoad: 539d0000 53b7c000   C:\Windows\Microsoft.NET\Framework\v3.0\WPF\wpfgfx_v0300.dll
ModLoad: 76990000 76a1f000   C:\Windows\system32\OLEAUT32.dll
ModLoad: 51520000 51754000   C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Core\e78709bedd31f237055667ad99b9451f\System.Core.ni.dll
ModLoad: 6cbc0000 6cc1b000   C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorjit.dll
ModLoad: 637d0000 638c1000   C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Configuration\9c2727d244dcc72fbefcf1ae22660f35\System.Configuration.ni.dll
ModLoad: 57f20000 58456000   C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Xml\93d38ea87365928456313035f8091126\System.Xml.ni.dll
ModLoad: 74130000 74143000   C:\Windows\system32\dwmapi.dll
ModLoad: 60340000 60348000   C:\Windows\Microsoft.NET\Framework\v2.0.50727\culture.dll
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): CLR exception - code e0434f4d (first chance)
(1e2c.738): C++ EH exception - code e06d7363 (first chance)
(1e2c.738): CLR exception - code e0434f4d (first chance)
(1e2c.738): CLR exception - code e0434f4d (first chance)
(1e2c.738): CLR exception - code e0434f4d (first chance)
(1e2c.738): CLR exception - code e0434f4d (!!! second chance !!!)
eax=0025e034 ebx=e0434f4d ecx=00000001 edx=00000000 esi=0025e0bc edi=002d66d8
eip=75acb4f4 esp=0025e034 ebp=0025e084 iopl=0         nv up ei pl nz ac po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000212
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Windows\system32\KERNELBASE.dll - 
KERNELBASE!RaiseException+0x54:
75acb4f4 c9              leave
4

1 に答える 1

2

より多くの情報を提供する必要があります。例外は何ですか?解決できない型が実行時に参照されている可能性があります。コードが使用されていない場合、オプティマイザーはそれを JIT から除外する可能性がありますが、デバッグ モードでは型ロード例外をトリガーする可能性があります。誰が知っていますか。これ以上の情報がなければ、それを判断することは不可能です。

あなたの質問の更新に応じて編集すると、インスタンス コンストラクターまたは静的コンストラクターで例外をスローしている Main という型があるようです。これをトリガーするフィールド初期化子である可能性もあります。例外をキャッチできる場合は、TargetInvocationExceptions に通常含まれる InnerException を確認します。これにより、より多くの情報が得られます。

内部例外は、私が最初に考えたアセンブリの読み込みの問題であることを編集しました。そのため、どこかで参照が欠落しています。特に、DLL を参照している可能性があり、その DLL が、見つからない別の DLL を参照している可能性があります。解決できないアセンブリを特定する必要があります。fuslogvw.exeツールを使用して、アセンブリ バインド エラーを表示できます。

于 2010-01-15T00:11:31.570 に答える