2013-12-22 3 views
4

В первый раз в сеансе отладки, который я пытаюсь показать визуализатору, он вызывает это исключение (появляется внизу), я нажимаю «Продолжить» в диалоговом окне сообщения об исключении и показать снова визуализатора (нажав на «увеличительного стекла значок рядом с переменной) Это простой визуализатор, что у меня есть:.DialogDebuggerVisualizer: COMException: объект находится в состоянии зомби

[assembly: DebuggerVisualizer(
    typeof(TestVisualizer), 
    Target = typeof (string), 
    Description = "Test Visualizer")] 

namespace VuTree { 
    public class TestVisualizer : DialogDebuggerVisualizer { 
     protected override void Show(IDialogVisualizerService svc, IVisualizerObjectProvider provider) { 
      var text = provider.GetObject() as string ?? "no object found..."; 
      using (var form = new Form()) 
      { 
       form.Text = text; 
       form.Size = new Size(400, 400); 
       svc.ShowDialog(form); 
      } 
     } 
    } 
} 

Это (часть) исключение:

************** Exception Text ************** 
System.Runtime.InteropServices.COMException (0x8013134F): Object is in a zombie state. (Exception from HRESULT: 0x8013134F) 

Server stack trace: 
    at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.IPropertyProxyEESide.InitSourceDataProvider(IEEDataStorage& data) 
    at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.ManagedShim.SafeProxyWrapper.InitSourceDataProvider() 
    at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg) 

Exception rethrown at [0]: 
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
    at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.ManagedShim.SafeProxyWrapper.InitSourceDataProvider() 
    at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.ManagedShim.DelegatedHost.CreateViewer(IntPtr hwnd, HostServicesHelper hsh, SafeProxyWrapper proxy) 

Почему это происходит? Как его решить?

ответ

1

В общем, Состояние зомби - это состояние, когда поток, который был ранее запущен (другим потоком), окончательно завершил его работу, но он не возвратил элемент управления вызывающему потоку, который его создал, а это значит, что он делает ничего, кроме живого где-то, вот почему они зовут зомби, потому что он должен возвращаться и заканчивать свою жизнь, но он не возвращался и не умирал. Пока это исключение появилось мне только тогда, когда я отлаживаю, я видел его с помощью веб-приложений, настольных компьютеров, win apps ... и все, что требуется для его решения, чтобы перезапустить приложение. Это освободит все выделенные ресурсы, и все должно вернуться к норме. В прошлый раз я столкнулся с этим исключением, когда я отлаживал веб-приложение, размещенное в IIS, после присоединения отладчика к процессу w3wp.exe (пул приложений).

Смежные вопросы