2009-12-01 14 views
3

J'ai écrit et testé une application WinForms et tout fonctionne correctement sur ma machine (cliché, je sais). Quand je crée un projet d'installation et installé sur une machine d'un collègue, il reçoit le message suivant:Aide à la gestion des exceptions

************** Exception Text ************** 
    System.IndexOutOfRangeException: There is no row at position 0. 
    at System.Data.RBTree`1.GetNodeByIndex(Int32 userIndex) 
    at System.Data.RBTree`1.get_Item(Int32 index) 
    at System.Data.DataRowCollection.get_Item(Int32 index) 
    at MyApp.MainForm.MainForm_Load(Object sender, EventArgs e) 
    at System.Windows.Forms.Form.OnLoad(EventArgs e) 
    at System.Windows.Forms.Form.OnCreateControl() 
    at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 
    at System.Windows.Forms.Control.CreateControl() 
    at System.Windows.Forms.Control.WmShowWindow(Message& m) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ScrollableControl.WndProc(Message& m) 
    at System.Windows.Forms.ContainerControl.WndProc(Message& m) 
    at System.Windows.Forms.Form.WmShowWindow(Message& m) 
    at System.Windows.Forms.Form.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 

Je dois admettre que je suis un débutant en ce qui concerne la gestion des exceptions comme celle-ci. Le texte n'a pas beaucoup de sens pour moi et je ne suis pas sûr de la meilleure façon de déboguer cela puisque je ne peux pas obtenir l'erreur sur mon ordinateur.

Quelqu'un peut-il dire quel est le problème, ou me conseiller sur la meilleure façon de déboguer cela? Toute aide est grandement appréciée! Visual Studio a une fonctionnalité de débogage à distance qui est très agréable.

+0

Pouvez-vous écrire le code de 'MyApp.MainForm.MainForm_Load'? –

Répondre

6

Apparemment, vous utilisez un objet sur DataRowCollection votre gestionnaire d'événement de chargement de formulaire principal, et cet objet DataRowCollection est vide (c'est-à-dire qu'il ne contient aucune ligne). Le gestionnaire d'événements de chargement de formulaire semble supposer qu'il ne sera pas et non.

Je vous suggère de définir un point d'arrêt (F9) sur l'accolade d'ouverture de MainForm_Load et de l'étape (F10 ou F11) à travers votre code jusqu'à ce que vous trouviez où le code essaie d'utiliser le DataRowCollection.

3

Si vous démarrez l'hôte de débogage distant sur l'ordinateur du collègue, vous pouvez vous connecter à ce processus en cours depuis l'IDE sur votre propre ordinateur. Je l'ai utilisé une couple de temps avec de très bons résultats.

http://msdn.microsoft.com/en-us/library/y7f5zaaa(VS.71).aspx

1

Sons comme une différence dans les données - que vous essayez d'accéder à un nœud dans un arbre par index qui n'existe pas ...

1

Vous créez une collection de lignes de données et accédez à celle-ci avec collection[0] sans valider si elle a au moins un élément pour commencer. Peut-être votre coleague se connecte à un magasin de données vide qui n'a pas de lignes?