Warum muss „Code optimieren“ eingeschaltet werden, damit mein Programm ohne Absturz ausgeführt werden kann?

StackOverflow https://stackoverflow.com/questions/2068482

Frage

Ich erhielt diese WPF -Anwendung, als ich versuchte, das Programm im Debug -Modus auszuführen, wurde es abstürzen, bevor ich zu Windows1.xml gelangt. Ich habe später versucht, im Release -Modus zu laufen und es würde erfolgreich ausgeführt. Ich habe es darauf eingegrenzt, ich musste "Code optimieren" einschalten, damit es funktioniert.

HINWEIS: Breakpoints, eintreten aus dem Debug und der Stoppen von Ausnahmen nicht funktionieren.

Bearbeiten: Die Ausnahme war WPF (sehr beliebt und nicht hilfreich) generische Ausnahme:

{"Ich kann keine Instanz von 'Main' definiert in der Assembly 'vcell2, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null' Zeile 1 Position 9. "} Source = "PräsentationFramework" LINENUMBER = 1 Zeilenposition = 9

Bearbeiten: Die innere Innenausnahme: {"Das angegebene Modul konnte nicht gefunden werden. (Ausnahme von HResult: 0x8007007e)": null}

Hier war die Stapelspur, die ich bekam:

   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

Bearbeiten Ich habe versucht, es zu laufen, windbg (weiß nicht, ob ich das richtig mache)

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
War es hilfreich?

Lösung

Sie müssen weitere Informationen bereitstellen. Was ist die Ausnahme? Es könnte sein, dass ein Typ zur Laufzeit referenziert wird, auf die nicht gelöst werden kann. Wenn der Code nicht verwendet wird, kann der Optimierer ihn nur von JIT weglassen, während er im Debug -Modus eine Typ -Lastausnahme ausgelöst hat. Wer weiß aber. Ohne weitere Informationen wäre es unmöglich zu sagen.

bearbeiten Als Antwort auf das Update in Ihrer Frage scheint es einen Typ namens Main zu geben, der eine Ausnahme in seinem Instanzkonstruktor oder statischen Konstruktor ausführt. Es könnte auch ein Feldinitialisierer sein, der dies auslöst. Wenn Sie die Ausnahme abrufen können, überprüfen Sie die Innerexception, die die Zielexzepte normalerweise enthalten. Dies gibt Ihnen mehr Informationen.

bearbeiten Sie haben angedeutet, dass die innere Ausnahme ein Problem der Baugruppe ist, das ich zunächst vorgestellt habe. Du fehlt also irgendwo eine Referenz. Insbesondere verweisen Sie wahrscheinlich auf eine DLL, die wiederum auf eine andere DLL verweist, die nicht gefunden werden kann. Sie müssen herausfinden, welche Baugruppe nicht gelöst werden kann. Du kannst den ... benutzen fuslogvw.exe Werkzeug zum Bindungsfehler der Baugruppe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top