IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Code C# ne fonctionne plus sous Seven [Débutant]


Sujet :

C#

  1. #21
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Tu as tout fait correctement. Je voulais savoir si c'était un bug du common language runtime et apparemment ce n'est pas le cas puisque l'on pénètre bien dans le programme. Ce serait donc un bug du programme lui-même.

    Sauf que dans ce cas tu devrais avoir la fenêtre d'exception de Visual Studio et non pas la simple boîte de texte de Windows. Une erreur survenue dans une dépendance native ?

    Quoi qu'il en soit il a donc falloir s'armer de patience et dérouler le programme pas à pas. Une fois le programme en pause sur la première ligne, les touches F10 et F11 permettent de survoler une ligne ou de pénétrer dans celle-ci (step over / step into). Il va falloir que tu trouves le point auquel le programme plante avant que nous ne puissions continuer. Bonne chance.

  2. #22
    Membre émérite

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Par défaut
    Bonsoir,

    J'ai donc essayé avec F10 et F11 mais à part me balader de ligne en ligne, je n'ai vu aucun message.
    En revanche, j'ai ajouter des MessageBox afin d'identifier l'endroit bloquant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class DatasetWriter_Byte : DatasetWriter
        {
            public byte[] scanline;
     
            public DatasetWriter_Byte (string filename, int width, int height) : base(filename,width,height,1,DataType.GDT_Byte)
            {
                scanline=new byte[width];
            }
     
            public override void WriteLine(int j)
            {
                GetRasterBand(0).WriteRaster(0,j,Width,1,scanline,Width,1,0,0);
            }
     
            public override void SetPixel(int i, byte val)
            {
                scanline[i]=val;
            }
        }
    A priori, çà coince entre la 1° et la 3° ligne mais je n'ai pas réussi à ajouter de MessageBox.
    Comment identifier quelle ligne pose problème ?

    Cordialement

    Christophe

  3. #23
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Que veux-tu dire par 1ère et troisième ligne ? Si tu parles des numéros de lignes affichés ici, ce sont deux lignes non-exécutables, ça n'a donc pas de sens. Si tu veux dire avant le constructeur (ligne 5 : DatasetWriter_Byte), à nouveau ça n'a pas de sens.

    Exécute pas-à-pas avec F10: 1 2 3... crash
    Du coup tu reviens sur l'instruction 3 et là tu utilises F11 pour voir à l'itnérieur: 3.1 3.2 3.3 3.4... crash
    Tu reviens sur l'instruction 3.4 tu utilises F11: 3.4.1... Etcétéra.

    Tu peux aussi utiliser les breakpoints (F9) plutôt que les MessageBox. Cela te permettra de voir la pile des appels, pour voir de quelle fonction on arrive. Tu peux ensuite cliquer sur un appel parent pour voir à quel point ce code est exécuté.

    Enfiin pense aussi après un crash à regarder la fenêtre de sortie (output), il y aura peut-être un message utile.

  4. #24
    Membre émérite

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Par défaut
    Bonjour de ce beau matin sous la pluie,

    J'avance petit à petit mais je ne désespère pas.

    Je t'avoue que j'ai du mal à effectuer ce que tu me demandes, je ne constate pas plus de réaction que cela.

    Cependant, j'ai réussi à trouver un problème ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void setenv()
            {
                //La variable système FWTOOLS_DIR existe ?
                string fwdir;
                fwdir = Environment.GetEnvironmentVariable("FWTOOLS_DIR");
                if (fwdir != null)
                    MessageBox.Show("La variable d'environnement FWTOOLS_DIR avec le chemin du répertoire de FWTools n'existe pas.");
                    return;
    }
    En fait la variable d'environnement existe et elle est bien lue.
    Toutefois, dans l'analyse fwdir récupère bien la valeur de la variable d'environnement, mais la condition, pour vérifier si cette valeur est nulle, est considérée comme vraie.

    Bizarre

    Manisfestement, j'ai un autre cas de figure comme çà, mais allons y petit à petit.

    Cordialement

    Christophe

  5. #25
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour à toi.

    Citation Envoyé par marsouin_89 Voir le message
    Je t'avoue que j'ai du mal à effectuer ce que tu me demandes, je ne constate pas plus de réaction que cela.
    Comment ça ? Tu veux dire que F10 et F11 ne semble pas avoir d'effet ? SI c'est le cas reprends avec un breakpoint sur la première ligne du programme (F9) : en appuyant sur F5 le programme démarre et tu es ramené à cette ligne sous VS, désormais surlignée. En appuyant sur F10 VS passe alors à la ligne suivante, surlignée à son tour. Si au lieu de F10 tu appuies sur F11 avant l'exécution d'une méthode de ton cru alors VS va pénétrer dans celle-ci.

    (désolé si j'ai mal interprété et que tu trouves ces explications bateau - je ne connais pas ton expérience)

    Toutefois, dans l'analyse fwdir récupère bien la valeur de la variable d'environnement, mais la condition, pour vérifier si cette valeur est nulle, est considérée comme vraie.
    Bien vu, c'est un bogue. La fonction affiche le message "n'existe pas" si elle existe déjà.

    Maintenant le problème est de savoir quel devrait être le bon comportement. Dans une fonction avec un nom de ce genre on s'attend à ce que l'on quitte la fonction si la variable existe déjà, pas à ce qu'on affiche un message d'erreur. Donc je mettrais celui-ci en commentaire. Cela dit ce n'est qu'une supposition, difficile d'en être sûr sans voir le reste de cette fonction.

  6. #26
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Par défaut
    Citation Envoyé par DonQuiche Voir le message
    Ne pas utiliser la ligne de commande fait que tu ne comprends pas ? Tu ne comprends pas quoi ? Le langage ? La compilation ? Et si tu ne connais pas les options de la ligne de commande tu vas faire "de la merde" ?

    Bien sûr que non, c'est un non-sens. Connaître les arguments de la ligne de commande n'a aucun intérêt et ne fait pas de toi un meilleur programmeur, ça te fait simplement connaître les arguments utilisés en ligne de commande. Connaître le système MS build est en revanche nécessaire pour personnaliser la compilation mais seulement pour ça et ça ne te fait pas écrire un meilleur code ou concevoir de meilleures architectures. Ça fait simplement de toi quelqu'un qui sait ajouter des étapes personnalisées à la compilation, une compétence certes utile.
    Je me suis mal exprimé, et je m'en excuse ... Ce n'est pas le fait de ne pas comprendre la ligne de commande, mais le fait de comprendre la compilation et ce qu'il se passe. Oui je pense, et ce n'est que mon avis, que la grande majorité des personnes ne s'intéresse pas au fonctionnement même de la compilation et de l'exécution, de ce qu'il se passe en mémoire et autres problématique lié au langage et à l'environnement. Ce qui les amènent a faire des choses bizarre. Et je pense aussi que la compréhension de la ligne de commande sur un MSBuild par exemple et un des points entrés vers cette compréhension, car comprendre certain arguments t'amène aussi à comprendre le fonctionnement sous-jacent.

    C'est un avis que j'ai et n'implique que moi.

    Pour ton problème, tu peux démarrer en pas à pas ce qui permet de voir exactement la ou sa bloque. Ou sinon tu peux aller dans "Debug > Exception" coché "Common Languages Runtime Exceptions", ce qui te permettra d'être arrêté par le débuger à l'endroit même ou une exception est diffusée.

    Sinon donne tout ton code, on peut l'essayer chez nous et on serra dedans

  7. #27
    Membre émérite

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Par défaut
    Bonsoir à tous,

    désolé pour mon silence mais j'ai effectué des tas de tests dans tous les sens et j'ai finalement réussi.

    En effectuant les F10 et F11, j'ai détecté une exception sur une fonction GDAL (librairies pour traitement de données géographiques).
    Après de nombreuses recherches sur le Net j'ai eu ma réponse.

    Finalement, j'ai réussi à compiler et tout fonctionne à merveille.
    Je dois encore faire quelques tests sur d'autres PC au boulot, mais je vais devoir attendre la fin de mes vacances.
    Cela dit, il n'y a pas de raison pour que cela ne fonctionne pas, je valide donc le sujet comme résolu.

    Vraiment un grand merci pour votre disponibilité ainsi que tous vos conseils car avec un pauvre débutant en C# comme moi, ce n'était pas gagné.

    Cordialement

    Christophe

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Objective-C] Code qui ne fonctionne plus sous iOS 5
    Par kOrt3x dans le forum Objective-C
    Réponses: 4
    Dernier message: 08/10/2011, 13h52
  2. Réponses: 9
    Dernier message: 13/11/2008, 15h47
  3. [AJAX] Code tuto Ajax fonctionne pas sous FF, mais IE et OP sont OK
    Par hugo69 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 08/01/2007, 21h27
  4. Réponses: 4
    Dernier message: 10/04/2006, 08h28
  5. [Eclipse3]Ctrl H ne fonctionne plus sous la perspective Java
    Par joseph_p dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/09/2005, 11h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo