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

Visual C++ Discussion :

[V.C++6] création .sym


Sujet :

Visual C++

  1. #1
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut [V.C++6] création .sym
    Bonjour à tous,
    je debug pour ma boite un driver.
    J'ai pas mal d'écran bleu lors de l'utilsiation.
    Je voudrais utiliser windbg pour savoir ce qui me les provoquent.

    d'apres mon boss il y a possiblité de savoir ce qui genere ces ecran bleu grace au fichier .map, . sym et .pbd.

    Mon problème c'est que lors de ma compilation je crée bien un fichier .pdb.

    Mais aucune trace d'un quelquonque .sym ou .map.

    Je voudrais donc savoir comment les créer, si c'est visual qui s'en charge ou bien un logiciel independant.


    Merci d'avance pour votre aide

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    d'apres mon boss il y a possiblité de savoir ce qui genere ces ecran bleu grace au fichier .map, . sym et .pbd.
    Aucun des trois...

    Pour savoir ce qui génère un écran bleu, il faut demander au système de générer un fichier de dump au BugCheck (BugCheck étant la dernière fonction à être exécutée lors d'une erreur critique).

    Déjà l'écran bleu peut être d'une certaine aide parce qu'il donne quelque fois des détails sur l'erreur.

    Pour générer le dump (en gros, il s'agit d'un vidage mémoire plus ou moins gros), il faut aller dans (ici en anglais) :

    Start > control panel > System > Advanced > Startup and recovery > settings > Write Debugging Information.

    Trois options pour le memory sump :

    - Small
    - Kernel
    - Complete

    Pour un driver, le mieux est de commencer par un Kernel Dump. (le "complete dump" est parfois très très gros...)

    Ensuite il faut regarder où va le dump, généralement : %SystemRoot%\Minidump

    Le dump est un fichier avec extension *.dmp.

    Une fois le dump généré (et après avoir redémarré) il suffit de démarrer windbg et de faire une session en ouvrant le fichier dump (File > Open crash Dump). Ici il n'y a "plus qu'à" faire l'analyse du dump (certainement le plus compliqué dans l'histoire).

    Ne pas oublier de charger les symboles du driver dans Windbg, ça aidera beaucoup.

    Commencer la session en analysant le bugcheck via les commandes :

    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dd NT!KiBugCheckData L5
    Ne pas oublier de faire un :

    Pour avoir plus d'infos.

    Une autre façon de pousser l'analyse plus loin serait de combiner l'analyse du dump avec une analyse live en faisant un remote debug kernel via Windbg (File > Kernel Debug > COM / 1394 / USB ; mais pas "local", le Kernel debug en local est fait sur un snapshot du kernel, ça n'est pas un "vrai" kernel debug...)

    Bon courage.

  3. #3
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    Bonjour et Merci Neista pour ton aide.
    Pour ce qui est de tes explications je les ai deja utilisées.

    Mon soucis c'est que d'apres mon Boss, il me serai possible à partir du symbol loader de chez softIce, de pouvoir cibler ma ligne de code me generant cet ecran bleu.

    Mais le problème c'est que SI necessite un fichier .sym
    or pour pouvoir créer ce .sym il me faudra d'abord créer un .map avec visual c++6
    et c'est la qu'est mon problème je ne sais pas comment le créer.
    Après c'est le soft fourni dans le DDK mapsym.exe qui se chargera de generer le .sym a partir du .map.

    En tout cas merci pour ton aide neista

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414

  5. #5
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    Merci nico-pyright pour tes liens.

    Ce qui m'etonne le plus c'est que je ne dispose pas de ces onglets pour mon projet, aucun moyen de generer des .map ou .sym.

    Les seuls fichier generé sont le .pdb et les .obj et .sbr

    il est peu etre possible de generer un .sym ou .map à partir d'un .pdb ???

    Si oui quelqu'un pourrait m'aider svp.

    J'ai aussi vu sur MSDN qu'il etait possible de generer un .map directement par le code grace à la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    C++
     
    property bool GenerateMapFile {
        bool get ();
        void set ([InAttribute] bool Map);
    }
    Mais je ne sait pas du tout ou la copier ....

    Mon projet consiste au développement d'un driver.
    Si c'a peu vous aider à m'aider lol.

    En totu cas merci d'avance pour votre aide

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414

  7. #7
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    Merci nico-pyright,
    Cependant je l'ai telechargé, j'ai recuperé le fichier manquant DBGHELP.lib
    Mais lorsque j'execute la commande :
    "C:\test\PDB2MAP monPDB.pdb"
    Il m'affiche le message "unable to load symbols for monPDB.pdb

    Voila je coince ici maintenant.
    En tout cas merci beaucoup pour ton aide j'avance petit à petit c'est deja bien lol.

  8. #8
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Pour créer un fichier .map il suffit de passer le switch /MAP au linker.

    voir :

    http://msdn2.microsoft.com/en-us/lib...e2(VS.80).aspx

    C'est pour VS2005 mais ça n'a pas changé depuis VC++ 6.0.

    Ensuite à partir du fichier .MAP il existe des utilitaires pour faire .MAP => .SYM (je ne sais plus s'ils sont dans le pack de numega, à voir).

  9. #9
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    Citation Envoyé par Neitsa Voir le message
    Pour créer un fichier .map il suffit de passer le switch /MAP au linker.

    voir :

    http://msdn2.microsoft.com/en-us/lib...e2(VS.80).aspx

    C'est pour VS2005 mais ça n'a pas changé depuis VC++ 6.0.

    Ensuite à partir du fichier .MAP il existe des utilitaires pour faire .MAP => .SYM (je ne sais plus s'ils sont dans le pack de numega, à voir).
    Merci Neista,
    Mais justement je n'arrive pas à créer ce fichier map depuis le settings de visual c++
    lorsque je fait "projects->settings", je n'ai que 2 onglet : "general" et "debug"
    je n'ai pas les onglet "link" "c++" etc...

    C'est pour ca que je galère autant
    Ca provient peu etre du type de projet, etant donné que ce n'est pas moi qui l'ai developpé je bute un peu.

    j'ai vu qu'il etait possible de le faire par le code, comment s'y prendre ??

    Merci encore votre aide

  10. #10
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Citation Envoyé par moulefrite Voir le message
    lorsque je fait "projects->settings", je n'ai que 2 onglet : "general" et "debug"
    je n'ai pas les onglet "link" "c++" etc...

    C'est pour ca que je galère autant
    Ca provient peu etre du type de projet, etant donné que ce n'est pas moi qui l'ai developpé je bute un peu.

    j'ai vu qu'il etait possible de le faire par le code, comment s'y prendre ??
    Ah ! je crois comprendre, c'est certainement parce que ton projet est un projet construit avec un makefile (vu que c'est pour construire un driver, je pense que le makefile doit utiliser le linker du DDK, et non le linker standard qui vient avec de l'IDE). De ce fait tu n'as plus les onglets C++, link etc.

    Essaye simplement de trouver le makefile de ton projet (quelque part dans un dossier) et au besoin, modifie la ligne de l'éditeur de lien (link). Si tu n'est pas sûr de toi, copie le makefile ici, on pourra certainement t'aider.

    P.S : non il n'est pas possible de le faire à partir du code c'est réservé au .NET (fonction GenerateMapFile) qui est le seul langage à pouvoir directement commander Visual (et c'est valable uniquement à partir de VS2005).

  11. #11
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    Merci Neista pour ton aide :

    voici donc le contenu de mon makefile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #
    # DO NOT EDIT THIS FILE!!!  Edit .\sources. if you want to add a new source
    # file to this component.  This file merely indirects to the real make file
    # that is shared by all the components of NT OS/2
    #
    !INCLUDE $(NTMAKEENV)\makefile.def
    Mais quand je regarde dans l'arbirescence de mon workspace
    il y a un dossier : source file, header file , resource file , command file et makefile

    Et dans ce repertoire makefile, 3 fichier :
    _ le .inf du driver
    _ un fichier buildOptions.txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DEBUG : ddkbuild -WNETW2K checked .
     
    RELEASE : ddkbuild -WNETW2K free .
    _ un fichier appelé "sources" sans aucune extension.
    Celui-ci contient :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    TARGETNAME=monDriver
    TARGETPATH=obj
    TARGETTYPE=DRIVER
     
    #
    # setup visualC++ source browsing
    #
    BROWSER_INFO=1
    BROWSERFILE=$(TARGETNAME).bsc -n
     
    C_DEFINES = $(C_DEFINES) -DUSB2 -DUNICODE 
     
     
    INCLUDES=$(WNETBASE)\inc\wnet;      \
    	 $(WNETBASE)\src\smartcrd\inc;  
     
    USE_MAPSYM=1
     
    TARGETLIBS=$(DDK_LIB_PATH)\usbd.lib	\
    		   $(DDK_LIB_PATH)\smclib.lib
     
    MSC_WARNING_LEVEL=/W3 /WX
    #MSC_WARNING_LEVEL= /W4
     
    SOURCES=\
    		Version.rc				\
    		Drvlog.mc				\
    		Debug.c					\
    		USB_dev.c				\
    		USB_Pnp.c				\
    		USB_pwr.c				\
    		Ftdi_defs.c				\
    		Ftdi_usb.c				\
            Pcsc.c					\
            PcscEvents.c			\
            PcscSmc.c				\
            PcscLayer.c				\
            PcscCoupler.c			\
            Iso.c					\
            Ask.c					\
            Esc.c					\
    		Csc_ord.c				\
    		Script.c				\
    		Power.c					\
    		Mifare.c				\
    		CTx.c					\
            Coupler.c
    Voila si c'a peu t'aider, Merci encore

  12. #12
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Normalement, il te suffira d'ajouter cette ligne dans ton fichier sources :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LINKER_FLAGS=$(LINKER_FLAGS) -MAP
    Je n'ai pas le DDK installé sur mon post, mais de mémoire, ça doit être ça. Ca devrait te produire un fichier .MAP en sortie.

  13. #13
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    Merci Neista,
    Mais lorsque j'ajoute la ligne de linkage :
    Il me genere l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LINK : Warning lnk4044 : unrecognized option '/MAP;' ignored
    Mais bon on approche du but lol

  14. #14
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    Citation Envoyé par Neitsa Voir le message
    Normalement, il te suffira d'ajouter cette ligne dans ton fichier sources :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LINKER_FLAGS=$(LINKER_FLAGS) -MAP
    Je n'ai pas le DDK installé sur mon post, mais de mémoire, ça doit être ça. Ca devrait te produire un fichier .MAP en sortie.
    EXCUSE MOI, c'est moi qui ait fait une erreur, j'ai mit un ";" alors que c'etait pas necessaire.


    Merci beaucoup pour ton aide Neista au moin le .map est fait passons à la suite le .sym lol

  15. #15
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    J'ai trouvé dans le DDK un soft qui s'appel mapsym, je viens de le tester et celui-ci me créer bien un .sym à partir d'un .map
    Par contre je voudrais savoir comment l'inclure dans la compilation
    Pour que lorsque je genere mon fichier .sys, il me crée en meme temps le .pdb le .map et le .sym

    Voila normalement ce sera tout lol
    c'est deja pas mal lol

    Enfin bon merci deja pour ton aide à toi Neista et toi Nico-pyright

  16. #16
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    J'ai trouvé un site genial sur le développement du driver,
    c'est http://www.osronline.com/


    D'apres ce site il faut que j'ajoute la ligne suivante à mon fichier sources :

    USE_MAPSYM=1

    la compilation se déroule bien mais aucun fichier .sym n'est crée....

    Je ne vois pas trop d'ou ca proviens

    En tout cas merci beaucoup pour votre aide.

Discussions similaires

  1. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  2. Création dynamique de TImages
    Par Dric dans le forum C++Builder
    Réponses: 10
    Dernier message: 08/07/2002, 12h36
  3. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30
  4. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

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