Visual Studio 2008调试器的问题

时间:2009-02-02 09:43:28

标签: visual-studio-2008 debugging

在我的一个项目中,我对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();
    }
}

5 个答案:

答案 0 :(得分:5)

VS2008的已知问题。可以使用补丁here

答案 1 :(得分:2)

这通常可能是由于未捕获的异常造成的。尝试捕获IDE中的所有异常。

在菜单栏上点击调试 - &gt;例外... ,然后选中公共语言运行时例外的“投递”复选框。

答案 2 :(得分:0)

Cryptography.Decrypt围绕COM加密提供程序框架的包装器?无论何时评估在COM中实现的内容,您都会遇到一些与您所描述的类似的异常线程问题。

很多时候帮助我关闭手表,汽车和本地窗口,然后小心不要鼠标悬停在任何东西上以避免触发调试器评估。

答案 3 :(得分:0)

我的怀疑是,当您在断点处暂停时,另一个线程上会发生异常。当您跨步时,异常优先,调试器跳转到该线程。

简单的解决方案是确保您只调试一个线程。

答案 4 :(得分:0)

我遇到了同样的问题。这是因为我的应用程序正在使用另一个应用程序,即Dbmonitor来跟踪数据库事件,但我在调试时没有运行Dbmonitor。因此,请检查是否添加任何代码以使用任何第三方应用程序。这可能会帮助你:)