Visual Studiodebugging – 忽略其他地方的exception,而在其他地方?

我有一些代码,在一个特定的行(这是在不同的开发人员的代码,所以我不能只是改变它),然后捕获和适当处理生成大量的ArgumentExceptions。

我试图debuggingArgumentExceptions这是发生在不同的代码段(然后被捕获和处理,所以我不能只看看未处理的exception)。

有什么办法可以忽略源自特定其他代码行的ArgumentExceptions,同时还会抛出抛出其他地方的ArgumentExceptions?

你也许可以做到这一点,但这取决于你要debugging的代码相对于其他开发者的代码的位置,以及你是否可以修改(但不提交你的修改)到他的代码。

首先你要做的是,至less暂时去菜单工具 – > 选项 – >在Visual Studio中debugging ,并勾选“只是我的代码”框。 我认为即使在快速版本中也可以使用这个function,但它可能不是,如果它不适合你,恐怕剩下的我不得不说了。

无论如何,一旦你有这个勾号,你将不会再看到不是“你的”代码的甩出通知。 这意味着来自程序集的代码不在.sln中,或者代码由System.Diagnostics[DebuggerNonUserCode]属性标记。 我通常做的是临时装饰[DebuggerNonUserCode]方法,直到我完成debugging我需要debugging,然后恢复这些更改之前检入到控制。

这并不像我想要的那么优雅(我很想在exception助手中使用“永远不会从这个站点抛出”)checkbox,但总比没有好。

我相信可能有其他的debugging器设置可能会与“我的代码”工作方式相互作用,所以如果这不起作用,让我知道,我会试着更准确地了解我的设置是什么时候我这样做

如果你在谈论“抛出抛出”exceptionfunction,那么没有。 这只是一个基于types的function而已,并没有任何方法来控制代码的哪一部分抛出exception。

最好的办法就是在所有关注的地方抛出或暂时抛出exception。

如果你知道如何调用它,我会在代码中设置断点,然后从那里进入(F11)。 你也可以在程序员修正他们的代码之前,让他们感觉更好(除非你是和平主义者),也许他们的代码中不会有太多的ArgumentExceptions(这可能会让你感觉更好)即使你是和平主义者)。

听起来像使用exception作为stream量控制。 如果您正在尝试debugging的程序稍后在程序中出现,则可以稍后尝试连接debugging程序,或者等到程序运行后才能在引发ArgumentException时打开中断程序。

尝试限制范围 – 如果你感兴趣的exception来自但不完全是ArgumentException,那么就打破这个。

告诉其他开发者修复他的代码。

编辑:在.NET 4中,您可以附加一个处理程序到AppDomain.FirstChanceException事件,筛选出非ArgumentException的excepitons,并根据调用堆栈筛选出不好的一个。

评论中的链接很棒。

我认为条件断点是你在这里找的。 您可以通过右键单击断点并单击条件…菜单项来完成此操作。