2014-11-05 66 views
0

我遇到了動態程序集中出現異常的情況,這反過來終止了我的應用程序。我假設這個程序集是由我們使用的一些第三方庫生成的,因爲我們自己不使用Reflection.Emit或其他的codegen工具。但是,據我所知,我無法確定它來自哪裏?如何處理外部/未知DynamicMethods程序集中的異常

這是個例外,我得到:

An unhandled exception of type 'System.ArgumentException' occurred in Unknown Module.

Additional information: An item with the same key has already been added.

是否有工具,或一些代碼,我可以寫在了自己的應用程序,要弄清楚是怎麼回事?

+0

這是一個有點不清楚你在問什麼。發生異常時,您應該有一個堆棧跟蹤,至少顯示外部代碼是如何被調用的。你是否希望它在生成的代碼中分解,如果是這樣,怎麼做? – 2014-11-05 16:53:07

+0

不,我沒有得到任何堆棧跟蹤,對不起,如果不明確。沒有。甚至沒有模塊引用或名稱。 – carlpett 2014-11-05 16:54:28

+0

你可以發佈你正在收到的確切消息的例子嗎? – 2014-11-05 16:55:27

回答

1

轉到調試 - >異常:

Exceptions dialog http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-82-17-metablogapi/5824.image_5F00_thumb.png

然後檢查公共語言運行庫異常線(或直接在ArgumentException線)拋出該異常複選框。這將使得調試器在任何異常拋出時立即啓動,在堆棧展開之前。此時您可以查看調用堆棧。

請注意,您可能還必須禁用以下選項:
工具 - >選項 - >調試 - >常規 - >啓用僅我的代碼

而且在調用堆棧窗口,使展外部代碼從上下文菜單中:

call stack context menu http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-82-17-metablogapi/5672.image_5F00_thumb_5F00_3.png

+0

謝謝!我腦海中唯一留下的問題就是爲什麼這個報道是來自一個未知的模塊。當我現在得到例外,它是在非常正常的,非發射的代碼... – carlpett 2014-11-05 17:06:40

+0

@carlpett是在不同的線程執行?如果讓異常傳播出線程,[它會強制終止您的進程](http://msdn.microsoft.com/en-us/library/ms228965.aspx)。 – 2014-11-05 17:07:48

+0

可能,是的。清理過程中發生了異常,似乎仍然有一些對被處理對象的引用,並對其進行了調用。 不過,我不明白爲什麼堆棧跟蹤消失了? – carlpett 2014-11-05 17:32:43