MacReiben Web Zone

Aller au contenu | Aller au menu | Aller à la recherche

07mai 2009

Arrêt soudain du debugger de Visual Studio 2008

Le contexte

Une boucle sur un objet Collection qui hérite de Collection<TypeGeneric>. Cette objet n'hérite pas directement de cette classe mais d'une classe intermédiaire. L'héritage se fait de la façon suivante :

ClasseCollection -> BaseClasseCollection -> MereCollection -> Collection<TypeGeneric>

BaseClasseCollection et MerCollection son situées dans une assembly différente de ClasseCollection. BaseClasseCollection contient une déclaration d'indexeur comme suit :

internal virtual MyBaseObject this[int index] 
{
    return (MyBaseObject) this[index];
}

Le problème

Lors du deboggage de la boucle, le debugger de Visual Studio 2008 s'arrete avec l'erreur : The debugger cannot continue running the process. Process was terminated

L'explication

J'ai trouvé sur les forums de la MSDN un topic référençant ce message d'erreur à propos de la méthode toString().

Plusieurs explications sont envisageables.

Une exception est levé dans la méthode incriminée

Ce qui cause une arrêt du debugger car il n'est pas possible de paramétrer celui ci par rapport à une exception.

Il me semble pourtant qu'il est possible de filtrer les exceptions sur lesquels s'arrête le debugger.

L'appel recursif

Un appel récursif d'une méthode du genre toString() provoque un arrêt du debugger - plus vraisemblable j'ai déjà rencontré ce cas.

En effet la méthode toString est utilisée par le debugger pour afficher les données dans la fenêtre des variables.

Conclusion

Je penche pour une exception levée lors de l'appel de l'indexeur - peut-être lors du cast. Affaire à suivre.

Sources

06avr. 2009

Microsoft CSharp 2 : Documentation sur la généricité

Je cherchais un bon récapitulatif du fonctionnement des générique en CSharp 2, c'est chose trouvée avec DotNetGuru :

La généricité en CSharp 2

30mar. 2009

CSharp 3 : Utiliser une clause Join entre deux collections

L'un des apports majeurs de la librairie Linq est la possibilité de faire des requetes sur les collections. Voici Quelques exemples d'utilisation de Linq avec des collections.

Lire la suite

30mar. 2009

Microsoft Visual Studio 2008 : Developpement de Addins - erreur 80131522

Ce n'est pas un blague, c'est une vraie erreur qui est retournée par Visual Studio 2008, si si.

Lire la suite

27mar. 2009

Microsoft Visual Studio 2008 : System.linq non trouvé

Petit soucis que j'ai eu récement avec Visual Studio 2008 en voulant requeter sur une collection avec Linq.

Le namespace System.Linq n'était plus disponible. Après une petite recherche sur Google, la solution et que la librairie System.Core était manquante.

Il suffit donc de rajouter une référence via un clic droit sur le projet puis ajouter référence.

16fév. 2009

Visual Studio, encapsulation et refactoring

Supposons que vous accédiez un membre public d'une classe et que vous décidiez de remplacer ce membre par une propriété.

En utilisant la fonctionnalité d'encapsulation fournit par Visual Studio, le membre est automatiquement passé de public à private. Tous les appels à ce membres dans votre solution, sont redirigés sur la propriété.

Sympa non ?

- page 1 de 20