Publicité
+ Répondre à la discussion
Page 3 sur 3 PremièrePremière 123
Affichage des résultats 41 à 47 sur 47
  1. #41
    Membre Expert Avatar de nicolas.sitbon
    Inscrit en
    août 2007
    Messages
    2 024
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : août 2007
    Messages : 2 024
    Points : 2 138
    Points
    2 138

    Par défaut

    Citation Envoyé par bibilolo2 Voir le message
    Pour savoir si l'implémentation du compilateur est conforme au standard AINSI C99, la constante doit être égale à "199901L".
    Toi tu as le livre "C précis et conçis" : je leur ai déjà signalé l'erreur p70 l'auteur parle des macro __STD_HOSTED__ et __STD_VERSION__ alors que c'est __STDC_HOSTED__ et __STDC_VERSION__ , le site signale désormais la seconde erreur http://www.oreilly.fr/archives/C-pkt-errata.txt et je les ai relancé pour la première. Je rappelle le passage de la norme qui explique ces 2 macros :
    Code :
    1
    2
    _ _STDC_HOSTED_ _ The integer constant 1 if the implementation is a hosted implementation or the integer constant 0 if it is not.
    _ _STDC_VERSION_ _ The integer constant 199901L.

  2. #42
    Membre régulier Avatar de J4e8a16n
    Profil pro
    Inscrit en
    mars 2009
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : mars 2009
    Messages : 179
    Points : 82
    Points
    82

    Par défaut fichiers grof et gdb manquants

    Bonjour à tous,

    J'obtiens avec gcc -g monexe

    a.exe et non pas a.out

    J'obtiens avec gcc -pg monexe
    gprof monexe [ou d'autres tentatives du genre]
    gmon.out: No such file or directory
    Petit Malin
    "accélérateur . . . qui pousse . . . un électron a passer par deux trous d’un écran en même temps." (Cyrille Burt: "C’est mieux qu’un fantôme") (Janus p.251 )
    HP Pavilion Elite m9525f Desktop PC - Vista Édition Familiale Premium SP1 64 bits - Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz - Intel 64 (EM64T), x86-64

  3. #43
    Membre actif
    Homme Profil pro Maxime Estrade
    Développeur en systèmes embarqués
    Inscrit en
    juillet 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Nom : Homme Maxime Estrade
    Âge : 24
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2009
    Messages : 99
    Points : 162
    Points
    162

    Par défaut

    Je vais me permettre d'intervenir.

    Je précise que je code en C depuis un an de manière intensive (entre 50 a 90H par semaine) et que j'ai pu faire un tour d'ensemble de ce le C propose .

    Je constate que le sujet parle de comment déboguer pour les débutants , or un bon nombre des messages que vous avez poster restent obscur même pour moi .

    Vous avez oublié que ce qui est évident pour vous ne va pas l'être forcement pour une personne qui va vous lire par la suite .

    Ensuite une bonne habitude à prendre est de faire des fonctions courtes (une trentaine de lignes pas plus), car pour déboguer il est plus simple de se pencher sur une fonction qui est courte est facilement isolable du reste du code.

    Il ne faut pas hésiter à tester de manière séparé les fonctions que vous codez .
    Je développe sous Unix et un bon déboguer dessus serai GDB.

    L'indentation est votre amie (oui oui)

    La coloration syntaxique est aussi très utile, voire indispensable.

    Lire les manuels des fonctions fournis par les bibliothèques.

    Ecrire en protocode (ou pseudo-code) ce que vous devez coder
    Ex:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
     
    fonction => copier une chaine de caracteres
    {
       déclarer les variables;
     
       initialiser les variables;
       etc etc .... 
    }
    Je ne détaille pas mais cela consiste a écrire ce que vous devez faire !

    Penser que vous allez devoir libérer la mémoire alloué avec malloc() !

    Penser aux différentes erreurs qui risquent de survenir ?

    Créer une série de fonctions qui vérifient les valeurs de retour des fonctions système

    J'ai du en oublier très certainement !
    Je les rajouterais par la suite ...

    Si j'ai écrit des choses pas claires pour certains, dites le moi et je me ferais un plaisir de me corriger pour être compris de tous
    Edit => le bouton pour me MP est juste en dessous xD

  4. #44
    Membre régulier Avatar de J4e8a16n
    Profil pro
    Inscrit en
    mars 2009
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : mars 2009
    Messages : 179
    Points : 82
    Points
    82

    Par défaut

    Merci à vous.


    Je peux faire
    int ret;
    ret = strcmp(str,str1);


    Je n'ignorais pas tout ce que vous avez décrit mais ce qui suis me surprend:
    Créer une série de fonctions qui vérifient les valeurs de retour des fonctions système .
    Par exemple?

    Citation Envoyé par J4e8a16n Voir le message
    Bonjour à tous,
    gcc -g -Wextra -Wall -pedantic -std=c99 tst.c
    a.exe et non pas a.out

    J'obtiens avec gcc -pg monexe
    gprof monexe [ou d'autres tentatives du genre]
    J'essaie d'être plus clair:

    >gcc -g -Wextra -Wall -pedantic -std=c99 tst.c produit a.exe et non pas a.out (comme dans C Unleashed par exemple, ou certains tutoriels de C Developpez)
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    gdb tst.exe a.exe
    GNU gdb 6.6
    Copyright (C) 2006 Free Software Foundation, Inc.
    (no debugging symbols found)
     
    warning: "C:\cygwin\home\Jean Pierre\tictactoe/a.exe": no core file handler recognize
    s format, using default
    warning: core file may not match specified executable file.
    warning: Couldn't find general-purpose registers in core file.
    warning: Couldn't find general-purpose registers in core file.
    #0  0x00000000 in ?? ()
    (gdb) file a.exe
    warning: core file may not match specified executable file.
    Reading symbols from C:\cygwin\home\Jean Pierre\tictactoe/a.exe...done.
    Si j'utilise la commande file a.exe, gdb trouve les symboles qui s'y trouve.

    ------------------------
    >gcc -pg -Wextra -Wall -pedantic -std=c99 tst.c ne produit aucun fichier pour le profilage.
    >gprof tst.exe
    Si je tente de 'profiler' monexe, gprof se plaint que gmon.out: No such file or directory


    Est-ce tout ce que je peux espérer sous Windows Vista?

    JPD
    Petit Malin
    "accélérateur . . . qui pousse . . . un électron a passer par deux trous d’un écran en même temps." (Cyrille Burt: "C’est mieux qu’un fantôme") (Janus p.251 )
    HP Pavilion Elite m9525f Desktop PC - Vista Édition Familiale Premium SP1 64 bits - Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz - Intel 64 (EM64T), x86-64

  5. #45
    Membre Expert Avatar de orfix
    Homme Profil pro Mounir Orfi
    Inscrit en
    avril 2007
    Messages
    706
    Détails du profil
    Informations personnelles :
    Nom : Homme Mounir Orfi
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2007
    Messages : 706
    Points : 1 075
    Points
    1 075

    Par défaut

    Citation Envoyé par J4e8a16n
    J'essaie d'être plus clair:

    >gcc -g -Wextra -Wall -pedantic -std=c99 tst.c produit a.exe et non pas a.out (comme dans C Unleashed par exemple, ou certains tutoriels de C Developpez)
    a.out sous *nix et a.exe sous windows.
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  6. #46
    Invité de passage
    Inscrit en
    juillet 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Salut,

    Tu ne devrais pas éditer le premier post pour que les solutions soient facile à voir? Parce que là, il faut regarder toute la discussion et ça peut être pénible!

    Tu pourrais soit réécrire au complet dans le premier post ou au moins mettre un lien avec une petite description vers ledit post.

    A+

  7. #47
    Membre régulier
    Homme Profil pro Fabien Hunter
    Développeur en systèmes embarqués
    Inscrit en
    mai 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabien Hunter
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : mai 2013
    Messages : 41
    Points : 75
    Points
    75

    Par défaut Error/Fault/Failure

    Beaucoup de chose ont dejà été dites , j ajoute juste ma petite contribution, la difference entre les termes : Error/Fault/Failure , Important car aidant a identifier le bug a savoir où chercher .

    Error: Erreure (de pensée) du Programmeur . par exemple confondre les format europeen et americain de la date : dd/mm/yy ou mm/dd/yy , erreures de syntaxe ......

    Fault : C est une erreur survenue (peut etre causer par un Error) dans le System . rend le systeme instable et imprevisible . Par exemple chez le client seulement apres avoir entrer un format incorrect que surviendra le "Fault" dans le systeme , pouvant provoquer l arret, ou un comportement bizare .

    Failure : Erreur permanente dans le system . Survient quand le systeme ne rempli pas correctement et entierement sa tache . Les "Fault" conduise souvent aux "Failure".

    *Solution avant de commencer un Projet :
    - Bien s informer sur les Spec et et les standard , appliqué les recommandation , s impregner theoriquement du domaine dans lequel on va travailler ("Il y a rien de plus pratique qu une bonne theorie"), toujours tenir un cahier de charge.

    Petit bonus : Considerer les Warnings comme des Erreures , essayer de les faires disparaitre , Si ce n est pas possible , bien documenter les Warnings presents dans le Code et expliquer pourquoi ils n ont pas pu etre dissoute .

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •