在我的一个项目中,我对Visual Studio 2008有一个奇怪的问题。当我在一行代码上设置一个断点时,它会被点击,但是当我试图“跳过”,或者其他任何应该通过该断点并停在下一行的其他内容时,代码会被执行并继续,好像我击中了F5。即使我在这一行之后的线上有另一个断点,也会发生这种情况,奇怪的是,第二个断点被忽略(有时)。
任何人,有什么想法吗?
已更新
以下是示例代码。但似乎在我尝试的任何地方......抛出异常的catch块,我有这个问题。
在下面的代码示例中,“return(T)bFormatter.Deserialize(mStream)”抛出异常。
public static T LoadEncryptedObject<T>(string location) where T : class
{
if( string.IsNullOrEmpty(location) || !System.IO.File.Exists(location) )
return default(T);
System.IO.FileStream fs = null;
try
{
fs = new System.IO.FileStream(location, System.IO.FileMode.Open,
System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite);
BinaryFormatter bFormatter = new BinaryFormatter();
byte[] encryptedBytes = new byte[fs.Length];
fs.Read(encryptedBytes, 0, encryptedBytes.Length);
MemoryStream mStream = new MemoryStream(Cryptography.Decrypt(encryptedBytes));
return (T)bFormatter.Deserialize(mStream);
}
catch( SerializationException sx )
{
System.Diagnostics.Debug.WriteLine(sx.Message);
return default(T);
}
finally
{
if( fs != null )
fs.Close();
}
}
答案 0 :(得分:5)
VS2008的已知问题。可以使用补丁here。
答案 1 :(得分:2)
这通常可能是由于未捕获的异常造成的。尝试捕获IDE中的所有异常。
在菜单栏上点击调试 - &gt;例外... ,然后选中公共语言运行时例外的“投递”复选框。
答案 2 :(得分:0)
Cryptography.Decrypt围绕COM加密提供程序框架的包装器?无论何时评估在COM中实现的内容,您都会遇到一些与您所描述的类似的异常线程问题。
很多时候帮助我关闭手表,汽车和本地窗口,然后小心不要鼠标悬停在任何东西上以避免触发调试器评估。
答案 3 :(得分:0)
我的怀疑是,当您在断点处暂停时,另一个线程上会发生异常。当您跨步时,异常优先,调试器跳转到该线程。
简单的解决方案是确保您只调试一个线程。
答案 4 :(得分:0)
我遇到了同样的问题。这是因为我的应用程序正在使用另一个应用程序,即Dbmonitor来跟踪数据库事件,但我在调试时没有运行Dbmonitor。因此,请检查是否添加任何代码以使用任何第三方应用程序。这可能会帮助你:)