2009-02-02 5 views
3

J'ai un problème étrange avec Visual Studio 2008 dans un seul de mes projets. Quand je place un point d'arrêt sur une ligne de code, il est bien touché, mais quand j'essaie de «passer par-dessus», ou quoi que ce soit d'autre qui est censé passer ce point d'arrêt sur la ligne suivante, le code est exécuté et continue comme si je frappais F5. Cela se produit même si j'ai un autre point de rupture sur la ligne juste après celui-ci, et étrangement, le second point de rupture est ignoré (parfois).Problème avec le débogueur Visual Studio 2008

Quelqu'un, une idée?

MISE À JOUR

Voici un exemple de code. Mais il semble que partout où j'ai un essai ... catch block dans lequel une exception est lancée, j'ai ce problème.

Dans l'exemple de code suivant "return (T) bFormatter.Deserialize (mStream)" génère une exception.

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

pouvez-vous fournir une distribution d'écran de ce "bug" (vous pouvez utiliser JING: http://www.jingproject.com/) – balexandre

+0

Quel type de code? winform? Webform? wpf? console? –

+0

C'est une application WinForm. – mrtaikandi

Répondre

2

Cela peut souvent être dû à une exception non interceptée. Essayez d'intercepter toutes les exceptions dans votre IDE.

Dans la barre de menu, cliquez sur Debug-> Exceptions ... et cochez la case "Jeté" pour Common Language Runtime Exceptions.

+0

Le problème est en fait lié aux exceptions, mais le fait est que j'ai attrapé l'exception lancée en utilisant un bloc try ... catch, mais les lignes de code sont toujours ignorées. – mrtaikandi

+0

Ce sera difficile à suivre, alors.Comme l'a dit balexandre dans un commentaire à votre question, essayez de télécharger un screencast en utilisant Jing http://www.jingproject.com/. –

+0

En fait, pouvez-vous poster le code? –

0

Cryptography.Decrypt est-il un wrapper autour de l'infrastructure du fournisseur de chiffrement COM? Chaque fois que vous évaluez quelque chose qui est implémenté dans COM, vous obtenez des problèmes de threads inhabituels qui ressemblent à ce que vous avez décrit. Souvent, ce qui m'aide, c'est de fermer les fenêtres de la montre, des autos et des locaux, et de faire très attention de ne pas passer la souris dessus pour éviter de déclencher l'évaluation du débogueur.

0

Mon soupçon est que pendant que vous êtes en pause sur le point d'arrêt, une exception se produit sur un autre thread. Lorsque vous passez dessus, l'exception est prioritaire et le débogueur passe à ce thread.

La solution simple consiste à s'assurer que vous ne faites que déboguer un thread.

5

Problème connu avec VS2008. Un correctif est disponible here.

0

J'ai eu le même problème. C'est parce que mon application utilisait une autre application, c'est-à-dire Dbmonitor, pour tracer des événements de base de données mais que je n'exécutais pas Dbmonitor pendant le débogage. Donc, vérifiez si vous ajoutez un code pour utiliser une application tierce. Cela pourrait vous aider :)

Questions connexes