Проблема с отладчиком Visual Studio 2008 - PullRequest
4 голосов
/ 02 февраля 2009

У меня странная проблема с Visual Studio 2008 только в одном из моих проектов. Когда я устанавливаю точку останова в строке кода, она попадает в нормальное состояние, но когда я пытаюсь «перешагнуть» или что-то еще, что должно пройти через эту точку останова и остановиться на следующей строке, код выполняется и продолжает, как будто я нажал F5. Это происходит, даже если у меня есть другая точка останова на линии сразу после этой, и, как ни странно, вторая точка останова игнорируется (иногда).

Кто-нибудь, есть идеи?

ОБНОВЛЕНО

Вот пример кода. Но, похоже, что везде, где у меня есть блок try ... 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 ]

5 голосов
/ 30 июля 2009

Известная проблема с VS2008. Патч доступен здесь .

2 голосов
/ 02 февраля 2009

Часто это может быть связано с необъяснимым исключением. Попробуйте перехватить все исключения в вашей IDE.

В строке меню нажмите Отладка-> Исключения ... и установите флажок «Брошенный» для Исключения общего времени выполнения .

0 голосов
/ 28 сентября 2010

У меня была такая же проблема. Это было потому, что мое приложение использовало другое приложение, то есть Dbmonitor, чтобы отслеживать события базы данных, но я не запускал Dbmonitor во время отладки. Так что проверьте, если вы добавляете какой-либо код, чтобы использовать любое стороннее приложение. Это может помочь вам :)

0 голосов
/ 30 июля 2009

Я подозреваю, что во время приостановки на точке останова возникает исключение в другом потоке. Когда вы перешагиваете, исключение приобретает приоритет, и отладчик переходит на этот поток.

Простое решение - обеспечить отладку только одного потока.

0 голосов
/ 03 февраля 2009

Является ли Cryptography.Decrypt оболочкой для платформы поставщика шифрования COM? Каждый раз, когда вы оцениваете что-то, что реализовано в COM, у вас появляются необычные проблемы с многопоточностью, которые звучат так же, как вы описали.

Часто мне помогает закрыть окна часов, авто и локальных окон, а затем быть очень осторожным, чтобы не навести курсор мыши на что-либо, чтобы избежать запуска оценки отладчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...