Visual studio 2008 Visual Studio 2008调试器-函数求值怪异

Visual studio 2008 Visual Studio 2008调试器-函数求值怪异,visual-studio-2008,debugging,visual-studio-debugging,Visual Studio 2008,Debugging,Visual Studio Debugging,我正在为一个更大的应用程序开发一个插件,我在下面的代码中遇到了一个奇怪的问题。在发布模式或调试模式下运行时,没有断点,一切正常。但是当我在下面的代码段附近放置断点时,我得到了一个错误。看起来调试器预先评估了if块内的代码,导致了错误,尽管该代码从未实际到达 请注意,索引器会在内部检查不正确的索引,并向主应用程序发送事件。主应用程序通过显示对话框并关闭自身来处理此错误事件。我无法更改主应用程序,也无法修改索引器(尽管我认为抛出异常而不是触发事件可能有效) 当我在工具->选项->调试中禁用“启用属性

我正在为一个更大的应用程序开发一个插件,我在下面的代码中遇到了一个奇怪的问题。在发布模式或调试模式下运行时,没有断点,一切正常。但是当我在下面的代码段附近放置断点时,我得到了一个错误。看起来调试器预先评估了if块内的代码,导致了错误,尽管该代码从未实际到达

请注意,索引器会在内部检查不正确的索引,并向主应用程序发送事件。主应用程序通过显示对话框并关闭自身来处理此错误事件。我无法更改主应用程序,也无法修改索引器(尽管我认为抛出异常而不是触发事件可能有效)

当我在工具->选项->调试中禁用“启用属性求值和其他隐式函数调用”时,它工作得非常好。你有什么办法解决这个问题吗?我不想看到这些错误消息,但我也不想失去调试器评估的便利性

[编辑]我重新编写了描述

[UPDATE]我临时更改了索引器中的代码,以引发异常,而不是将事件委托给上层错误处理层,这很有帮助。VS调试器接受了异常,因此所有副作用都停止了(错误处理层未显示任何消息框)

因此,问题是:

除了以下选项之外,还有第三个选项吗

1) 从弹出到上层的事件永久更改为异常


2) 取消选中“启用属性求值和其他隐式函数调用”

是否控制\u manager是其实例的类的实现?您是否尝试过在其上添加[DebuggerBrowsable(Never)]属性?它应该对调试器隐藏该属性。

您是否控制\u manager是其实例的类的实现?您是否尝试过在其上添加[DebuggerBrowsable(Never)]属性?它应该对调试器隐藏该属性。

您能解释一下“错误”是什么意思吗?它是否会弹出对话框、退出调试器等…“错误是一个对话框”不是我见过的错误消息。更好地记录你的问题。你能解释一下“错误”是什么意思吗?它是否会弹出对话框、退出调试器等…“错误是一个对话框”不是我见过的错误消息。更好地记录你的问题。不幸的是,这没有帮助。我也尝试过DebuggerStepThrough,但也不起作用。不管怎样,谢谢你的建议。不幸的是,这没什么帮助。我也尝试过DebuggerStepThrough,但也不起作用。无论如何,谢谢你的建议。
int a = GetA(); // returns 0
if (a == 1)
{
   _manager[a - 1][ColumnName.Name] = "X"; //Manager has an indexer returning a DataRow.
}

if (a == 2)
{
   _manager[a - 1][ColumnName.Name] = "Y";
}