Les premiers pas
La mise en route du débogueur CodeView nécessite plusieurs étapes simples. Vous devez d'abord préparer un fichier exécutable au format spécial pour le programme que vous souhaitez déboguer ; alors vous pouvez invoquer le débogueur. Vous pouvez également spécifier des options affectant le fonctionnement du débogueur.
Le logiciel CodeView permet de déboguer des fichiers exécutables au format CodeView à l'aide du langage de programmation C, FORTRAN, BASIC, Pascal ou assembleur 80x86, et comment charger un programme dans le débogueur CodeView.
Restrictions
Le tableau suivant décrit brièvement les types de fichiers n'étant pas directement pris en charge par le débogueur (les restrictions suivantes s'appliquent généralement à l'utilisation du débogueur CodeView, quel que soit le langage de programmation utilisé) :
Restriction | Explication |
---|---|
Fichiers d'inclusion | Vous ne pourrez pas utiliser le débogueur CodeView pour déboguer le code source dans les fichiers d'inclusion. |
Fichiers compressés | Les informations symboliques CodeView ne peuvent pas être placées dans un fichier compressé. |
Fichiers .COM | Les fichiers avec l'extension .COM peuvent être débogués en mode assemblage uniquement ; ils ne peuvent jamais contenir d'informations symboliques. |
Programmes résidents en mémoire | Le débogueur CodeView ne peut fonctionner qu'avec les fichiers .EXE et .COM résidant sur le disque. Le débogage des fichiers résidant en mémoire n'est pas pris en charge. |
Programmes modifiant l'environnement | Les programmes exécutés sous le débogueur CodeView peuvent lire l'environnement DOS, mais ils ne peuvent pas le modifier de manière permanente. À la sortie de CodeView, toutes les modifications apportées à l'environnement sont perdues. |
Préfixe de segment de programme (PSP) | Le débogueur CodeView prétraite automatiquement le PSP d'un programme de la même manière qu'un programme C ; les guillemets sont supprimés et il reste exactement un espace entre les arguments de la ligne de commande. Ce prétraitement ne crée un problème que si vous déboguez un programme non écrit en C - un programme tentant d'accéder aux paramètres de la ligne de commande. |
Certaines des fonctionnalités désormais autorisées par CodeView incluent le débogage des modules de bibliothèque et le débogage du code en recouvrement. Les utilisateurs de CodeView peuvent désormais déboguer librement les modules et les recouvrements de la bibliothèque.
Préparation des programmes pour le débogueur CodeView
Vous devez compiler et lier avec les options correctes afin d'utiliser un programme avec le débogueur CodeView. Ces options demandent au compilateur et à l'éditeur de liens de produire un fichier exécutable, contenant des informations sur les numéros de ligne et une table de symboles, en plus du code exécutable.
Toutes les versions du compilateur et de l'éditeur de liens ne prennent pas en charge les options CodeView. En outre, vous devrez utiliser Micrsoft Overlay Linker, version 3.6 ou ultérieure. Si vous essayez de déboguer un fichier exécutable n'ayant pas été compilé et lié avec les options CodeView, ou si vous utilisez un compilateur ne prenant pas en charge ces options, vous ne pourrez utiliser le débogueur qu'en mode assembleur. Cela signifie que le débogueur CodeView ne pourra pas afficher le code source ni comprendre les symboles au niveau de la source, tels que les symboles des fonctions et des variables.
Considérations de programmation
Tout code source légal en C, FORTRAN, BASIC, Pascal ou Microsoft Macro Assembler peut être compilé ou assemblé pour créer un fichier exécutable, puis débogué avec le débogueur CodeView. Cependant, certaines pratiques de programmation rendent le débogage plus difficile.
Chacun des langages Microsoft répertoriés ci-dessus vous permet de placer du code dans des fichiers d'inclusion distincts et de lire les fichiers dans votre fichier source à l'aide d'une directive d'inclusion. Cependant, vous ne pourrez pas utiliser le débogueur CodeView pour déboguer le code source dans les fichiers inclus. La méthode préférée de développement de programmes consiste à créer des modules d'objets séparés, puis à lier les modules d'objets à votre programme. Le débogueur CodeView prend en charge le débogage de modules d'objets distincts dans la même session.
En outre, le débogueur CodeView sera plus efficace et plus facile à utiliser si vous placez chaque instruction source sur une ligne distincte. Un certain nombre de langages (C et BASIC en particulier) permettent de placer plusieurs instructions sur une même ligne du fichier source. Cette pratique n'empêche pas le débogueur CodeView de fonctionner. Cependant, le débogueur doit traiter la ligne comme une seule unité ; il ne peut pas décomposer la ligne en instructions séparées. Par conséquent, si vous avez trois instructions sur la même ligne, vous ne pourrez pas mettre de point d'arrêt ou geler l'exécution sur les instructions individuelles. Le mieux que vous puissiez faire est de figer l'exécution au début des trois instructions, ou au début de la ligne suivante.
Certains langages (C et assembleur en particulier) supportent un type d'expansion de macro. Toutefois, le débogueur CodeView ne vous aidera pas à déboguer les macros en mode source. Vous devrez développer vous-même les macros avant de les déboguer, sinon le débogueur les traitera comme de simples instructions ou des instructions.
Enfin, vos segments doivent être déclarés selon le format standard de Microsoft. Ceci est pris en charge automatiquement pour vous avec chacun des langages Microsoft de haut niveau.
Options de compilation CodeView
Les compilateurs Microsoft acceptent les options de ligne de commande précédées d'une barre oblique (/) ou d'un tiret (-).
L'utilisation de lettres majuscules ou minuscules est significative pour les options utilisées avec les compilateurs C, FORTRAN, BASIC et Pascal ; vous devez taper les lettres exactement comme indiqué.
Lorsque vous compilez un fichier source pour un programme que vous souhaitez déboguer, vous devez spécifier l'option /Zi sur la ligne de commande. L'option /Zi demande au compilateur d'inclure le numéro de ligne et les informations symboliques dans le fichier objet. Si vous n'avez pas besoin d'informations symboliques complètes dans certains modules, vous pouvez compiler ces modules avec l'option /Zd au lieu de /Zi. L'option /Zd écrit moins d'informations symboliques dans le fichier objet, donc l'utilisation de cette option permet d'économiser de l'espace disque et de la mémoire. Par exemple, si vous travaillez sur un programme composé de cinq modules mais que vous n'avez besoin de déboguer qu'un seul module, vous pouvez compiler ce module avec l'option /Zi et les autres modules avec l'option /Zd. Vous pourrez examiner les variables globales et voir les lignes source dans les modules compilés avec l'option /Zd, mais les variables locales ne seront pas disponibles.
L'option /Zd n'est pas disponible avec QuickBASIC.
De plus, si vous travaillez avec un langage de programmation de haut niveau, vous souhaiterez probablement utiliser l'option /Od, désactivant l'optimisation. Le code optimisé peut être réorganisé pour une plus grande efficacité et, par conséquent, les instructions de votre programme peuvent ne pas correspondre étroitement aux lignes source. Après le débogage, vous pouvez compiler une version finale du programme avec le niveau d'optimisation que vous préférez.
L'option /Od n'est pas disponible avec QuickBASIC ou l'assembleur de macros.
Vous ne pouvez pas déboguer un programme tant que vous ne l'avez pas compilé avec succès. Le débogueur CodeView ne vous aidera pas à corriger les erreurs de syntaxe ou de compilateur. Une fois que vous avez réussi à compiler votre programme, vous pouvez utiliser le débogueur pour localiser les erreurs logiques dans le programme.
Options de lien CodeView
Si vous utilisez LINK séparément pour lier un fichier objet ou des fichiers pour le débogage, vous devez spécifier l'option /CODEVIEW (elle peut être abrégée en /CO). Cela indique à l'éditeur de liens d'incorporer les adresses des symboles et des lignes source dans le fichier exécutable.
Notez que si vous utilisez un programme de pilote Microsoft appellant automatiquement l'éditeur de liens (tel que CL avec C ou FL avec FORTRAN), l'éditeur de liens sera automatiquement appelé avec l'option /CO chaque fois que vous spécifiez /Zi sur la ligne de commande. Vous n'utilisez pas /CO sauf si vous appelez directement l'éditeur de liens en tapant LINK.
Bien que les fichiers exécutables préparés avec l'option /CODEVIEW puissent être exécutés à partir de la ligne de commande DOS comme n'importe quel autre fichier exécutable, ils sont plus volumineux en raison des informations symboliques supplémentaires qu'ils contiennent. Pour minimiser la taille du programme, vous voudrez probablement recompiler et lier votre version finale sans l'option /Zi lorsque vous aurez fini de déboguer un programme.
Préparation des programmes C
Pour utiliser le débogueur CodeView avec un programme écrit en C, vous devez le compiler avec le compilateur Microsoft C, version 4.0 ou ultérieure. Les versions antérieures du compilateur ne prennent pas en charge les options de compilation CodeView. Vous devez également établir une liaison avec Microsoft Overlay Linker, version 3.6 ou ultérieure.
Écrire du code source C
Le Microsoft C prend en charge l'utilisation de fichiers d'inclusion via l'utilisation de la directive #include. Cependant, vous ne pourrez pas déboguer le code source placé dans les fichiers d'inclusion. Par conséquent, vous devez réserver l'utilisation des fichiers d'inclusion pour les macros #define et les définitions de structure.
Le langage C vous permet de mettre plusieurs instructions sur une ligne. Cette pratique rend difficile le débogage de telles lignes de code. Par exemple, le code suivant est légal en C :
- code = buffer[count]; if (code == '\n') ++lines;
Ce code est composé de trois instructions source distinctes. Lorsqu'elles sont placées sur la même ligne, les instructions individuelles ne sont pas accessibles pendant le débogage. Vous ne pouvez pas, par exemple, arrêter l'exécution du programme à ++lines;. Le même code serait plus facile à déboguer sous la forme suivante :
- code = buffer[count];
- if (code == '\n')
- ++lines;
Cela facilite la lecture du code et correspond à ce qui est généralement considéré comme une bonne pratique de programmation.
Vous ne pouvez pas facilement déboguer des macros avec le débogueur CodeView. Le débogueur ne décomposera pas la macro pour vous. Par conséquent, si vous avez des macros complexes avec des effets secondaires potentiels, vous devrez peut-être d'abord les écrire sous forme d'instructions source régulières.
Compiler et lier des programmes C
Les options /Zi, /Zd et /Od sont toutes prises en charge par les compilateurs Microsoft C, versions 4.0 et ultérieures. Les options sont acceptées par le pilote CL et le pilote MSC, ayant été fourni avec la version 4.0. La liaison séparée avec /CO est nécessaire lorsque vous compilez avec MSC.
Le débogueur CodeView prend en charge la programmation en plusieurs langages de programmation.
Exemples
CL /Zi /Od EXAMPLE.C |
MSC /Zi /Od EXAMPLE LINK /CO EXAMPLE; |
CL /Zi /Od /c MOD1.C CL /Zd /Od /c MOD2.C CL /Zi MOD1 MOD2 |
Dans le premier exemple, CL est utilisé pour compiler et lier le fichier source EXAMPLE.C. Le CL crée un fichier objet au format CodeView, EXAMPLE.OBJ, puis appelle automatiquement l'éditeur de liens avec l'option /CO. Le deuxième exemple montre comment compiler et lier le fichier source EXAMPLE.C en utilisant le programme MSC fourni avec la version 4.0 du compilateur. Étant donné que MSC n'appelle pas l'éditeur de liens, vous devez appeler l'éditeur de liens directement et spécifier /CO sur la ligne de commande. Les deux exemples génèrent un fichier exécutable, EXAMPLE.EXE, contenant les informations de numéro de ligne, la table des symboles et le code non optimisé requis par le débogueur CodeView.
Dans le troisième exemple, le module source MOD1.C est compilé pour produire un fichier objet avec des informations symboliques et de ligne complètes, tandis que MOD2.C est compilé pour produire un fichier objet avec des informations limitées. Ensuite, CL est à nouveau utilisé pour lier les fichiers objets résultants. (Cette fois, CL ne recompile pas car les arguments n'ont pas d'extension .C.) Taper /Zi sur la ligne de commande provoque l'invocation de l'éditeur de liens avec l'option /CO. Le résultat est un fichier exécutable dans lequel l'un des modules, MOD2.C, sera plus difficile à déboguer. Cependant, le fichier exécutable occupera beaucoup moins d'espace sur le disque qu'il ne le ferait si les deux modules étaient compilés avec des informations symboliques complètes.
Préparation des programmes FORTRAN
Pour utiliser le débogueur CodeView avec un programme écrit en FORTRAN, vous devrez le compiler avec le compilateur d'optimisation Microsoft FORTRAN, version 4.0 ou ultérieure. Les versions antérieures du compilateur ne prennent pas en charge les options de compilation CodeView. Vous devrez également établir un lien avec Microsoft Overlay Linker, version 3.6 ou ultérieure.
Écrire du code source FORTRAN
Le compilateur Microsoft FORTRAN prend en charge l'utilisation de fichiers d'inclusion via l'utilisation de la directive $INCLUDE. Cependant, vous ne pourrez pas déboguer le code source dans un fichier inclus. Si vous avez du code source que vous souhaitez mettre dans des fichiers séparés, vous devez utiliser les techniques des modules compilés séparément. Le débogueur CodeView prend en charge cette technique en vous permettant de tracer via des fichiers source distincts dans la même session.
Compilation et liaison de programmes FORTRAN
Les options /Zi, /Zd et /Od sont toutes prises en charge par le compilateur d'optimisation Microsoft FORTRAN, version 4.0. Le débogueur CodeView prend en charge la programmation en plusieurs langues.
Exemples
FL /Zi /Od EXAMPLE.FOR |
FL /Zi /Od /c EXAMPLE.FOR LINK /CO EXAMPLE; |
FL /Zi /Od /c MOD1.FOR FL /Zd /Od /c MOD2.FOR FL /Zi MOD1 MOD2 |
Dans le premier exemple, FL est utilisé pour compiler et lier le fichier source EXAMPLE.FOR. FL crée un fichier objet au format CodeView, EXAMPLE.OBJ, puis appelle automatiquement l'éditeur de liens avec l'option /CO. Le deuxième exemple montre comment compiler et lier le fichier source EXAMPLE.FOR en utilisant des étapes distinctes pour la compilation et la liaison. Dans ce cas, l'option /CO doit être donnée explicitement à l'éditeur de liens. Les deux exemples génèrent un fichier exécutable, EXAMPLE.EXE, contenant les informations de numéro de ligne, la table des symboles et le code non optimisé requis par le débogueur CodeView.
Dans le troisième exemple, le module source MOD1.FOR est compilé pour produire un fichier objet avec des informations symboliques et de ligne complètes, tandis que MOD2.FOR est compilé pour produire un fichier objet avec des informations limitées. Ensuite, FL est à nouveau utilisé pour lier les fichiers objets. (Notez que cette fois, FL ne recompile pas, car les arguments n'ont pas d'extension .FOR.) Taper /Zi sur la ligne de commande provoque l'invocation de l'éditeur de liens avec l'option /CO. Le résultat est un fichier exécutable dans lequel l'un des modules, MOD2.FOR, sera plus difficile à déboguer. Cependant, le fichier exécutable occupe beaucoup moins d'espace sur le disque qu'il ne le ferait si les deux modules étaient compilés avec des informations symboliques complètes.
Préparation des programmes BASIC
Pour utiliser le débogueur CodeView avec un programme écrit en BASIC, vous devrez le compiler avec QuickBASIC, version 4.0 ou ultérieure. Vous devrez également établir un lien avec Microsoft Overlay Linker, version 3.6 ou ultérieure.
Écriture du code source BASIC
Le Microsoft BASIC prend en charge l'utilisation de fichiers d'inclusion via l'utilisation de la directive REM $INCLUDE. Cependant, vous ne pourrez pas déboguer le code source placé dans les fichiers d'inclusion. La pratique préférée pour développer du code source dans des fichiers séparés consiste à utiliser des modules compilés séparément. Le débogueur CodeView ne prend pas en charge cette technique en vous permettant de tracer via des fichiers source distincts dans la même session.
Le BASIC vous permet également de mettre plus d'une déclaration sur une ligne. Cette pratique rend difficile le débogage de telles lignes de code. Par exemple, le code suivant est légal, voire commun, en BASIC :
- SUM=0 : FOR I=1 TO N : SUM=SUM+ARRAY(I) : NEXT I
Ce code est en fait composé de quatre instructions BASIC distinctes. Lorsqu'elles sont placées sur la même ligne, les instructions individuelles ne sont pas accessibles pendant le débogage. Vous ne pouvez pas, par exemple, arrêter l'exécution du programme à SUM=SUM+ARRAY(I). Le même code serait plus facile à déboguer s'il était écrit sous la forme suivante :
- SUM=0
- FOR I=1 TO N
- SUM=SUM+ARRAY(I)
- NEXT I
Compilation et liaison de programmes BASIC
Les versions 4.0 et ultérieures de QuickBASIC peuvent préparer des programmes BASIC à utiliser avec le débogueur CodeView, via l'utilisation de la ligne de commande BC. Vous ne pouvez pas préparer des programmes à utiliser avec CodeView lorsque vous êtes dans l'éditeur QuickBASIC lui-même. Au lieu de cela, compilez séparément avec l'option de ligne de commande BC /Zi. Vous devez également établir un lien séparé avec /CO.
Le débogueur CodeView prend en charge la programmation en plusieurs langages de programmation.
Exemple
BC /Zi EXAMPLE; LINK /CO EXAMPLE; |
L'exemple ci-dessus compile le fichier source EXAMPLE.BAS pour produire un fichier objet, EXAMPLE.OBJ, contenant les informations de symbole et de numéro de ligne requises par le débogueur CodeView. Ensuite, l'éditeur de liens est appelé avec l'option /CO pour créer un fichier exécutable pouvant être utilisé avec le débogueur.
Préparation des programmes Pascal
Pour utiliser le débogueur CodeView avec un programme écrit en Pascal, vous devrez le compiler avec le compilateur Microsoft Pascal, version 4.0 ou ultérieure. Les versions antérieures de Pascal ne prennent pas en charge les options de compilation CodeView. Vous devrez également établir un lien avec Microsoft Overlay Linker, version 3.6 ou ultérieure.
Si vous disposez d'une version de Microsoft Pascal antérieure à la version 4.0, vous pouvez utiliser le débogueur CodeView dans une mesure limitée. Toutefois, le débogueur ne pourra pas évaluer les symboles de programme dans les commandes CodeView. Compilez un programme comme vous le feriez normalement, puis liez-le avec l'option /CO comme expliqué ci-dessous. Vous pourrez alors utiliser CodeView pour parcourir votre programme et définir des points d'arrêt. Le débogueur sera également capable d'afficher du code au niveau de la machine et de faire des vidages de mémoire.
Écrire du code source Pascal
Le Microsoft Pascal prend en charge l'utilisation des fichiers d'inclusion en fournissant la métacommande $include. Cependant, vous ne pourrez pas déboguer le code source placé dans les fichiers d'inclusion. Vous pouvez facilement déboguer du code dans des fichiers source compilés séparément. Utilisez cette technique, plutôt que celle des fichiers d'inclusion, si vous souhaitez déboguer un programme volumineux.
Le Pascal vous permet de mettre plusieurs instructions sur une ligne, mais il est difficile de déboguer des programmes avec plusieurs instructions sur une seule ligne. Par exemple, le code suivant est parfaitement légal en Pascal :
Ce code est en fait composé de cinq instructions source distinctes. Lorsqu'elles sont placées sur la même ligne, les instructions individuelles ne sont pas accessibles pendant le débogage. Vous ne pourriez pas, par exemple, arrêter l'exécution du programme à k := k+1; Le même code serait plus facile à déboguer s'il était écrit comme suitR :
L'écriture d'une seule instruction sur une ligne facilite la lecture du code et correspond à ce qui est généralement considéré comme une bonne pratique de programmation.
Compiler et lier des programmes Pascal
Les versions 4.0 et ultérieures de Microsoft Pascal prennent en charge les options CodeView /Zi et /Zd, lorsque vous utilisez le programme de pilote PL. Les options de compilation CodeView sont placées sur la ligne de commande lors de l'invocation de la première passe du compilateur Pascal.
L'option /CO n'est nécessaire que lorsque vous liez séparément.
Exemple
PL /Zi /c TEST LINK /CO TEST; |
L'exemple ci-dessus compile le fichier source TEST.PAS pour produire un fichier objet, TEST.OBJ, contenant les informations de symbole et de numéro de ligne requises par le débogueur CodeView. Ensuite, l'éditeur de liens est appelé avec l'option /CO. Le débogueur CodeView prend en charge la programmation en plusieurs langues.
Préparation des programmes d'assemblage
Pour utiliser toutes les fonctionnalités du débogueur CodeView avec les programmes d'assemblage, vous devrez assembler avec Microsoft Macro Assembler, version 5.0 ou ultérieure. Quelle que soit la version de l'assembleur que vous utilisez, vous devrez établir une liaison avec Microsoft Overlay Linker, version 3.6 ou ultérieure.
Écrire le code source de l'assembleur
Si vous disposez de la version 5.0 de Microsoft Macro Assembler, vous pouvez utiliser les directives de segment simplifiées. L'utilisation de ces directives garantit que les segments seront déclarés correctement pour être utilisés avec le débogueur CodeView. (Ces directives facilitent également la programmation en langage mixte.) Si vous n'utilisez pas ces directives, vous devez vous assurer que le nom de classe du segment de code est CODE.
Le débogueur CodeView reconnaît correctement les valeurs à virgule flottante uniquement lorsqu'elles sont au format IEEE (Institute of Electrical and Electronics Engineers, Inc.). Vous devez utiliser le format IEEE avec tout programme que vous allez exécuter avec le débogueur CodeView si ce programme utilise des variables à virgule flottante. Le format IEEE est le format par défaut pour la version 5.0 de Microsoft Macro Assembler. Vous pouvez toujours spécifier le format IEEE en utilisant la directive .8087 ou .287, ou en assemblant avec l'option /R.
Vous ne pourrez pas suivre les macros en mode source. Les macros seront traitées comme des instructions uniques, sauf si vous êtes en mode assemblage ou mixte, vous ne verrez donc pas de commentaires ou de directives dans les macros. Par conséquent, vous souhaiterez peut-être déboguer le code avant de le placer dans une macro.
Le Microsoft Macro Assembler prend également en charge les fichiers d'inclusion, mais vous ne pourrez pas déboguer le code dans un fichier d'inclusion. Il est préférable de réserver les fichiers d'inclusion pour les définitions de macro et de structure. Parce que l'assembleur n'a pas son propre évaluateur d'expression, vous devrez utiliser l'évaluateur d'expression C-, FORTRAN-, BASIC-, Pascal-. Le C est la valeur par défaut car il est le plus proche du langage assembleur. Pour vous assurer que l'évaluateur d'expression reconnaît vos symboles et étiquettes, vous devez respecter les consignes suivantes lorsque vous écrivez des modules d'assemblage :
- L'assembleur n'a aucun moyen explicite de déclarer des nombres réels. Cependant, il transmettra les informations symboliques correctes pour les réels et les entiers si vous initialisez chaque nombre réel avec un point décimal et chaque entier sans point décimal. (Le type par défaut est entier.) Par exemple, les instructions suivantes initialisent correctement REALSUM en tant que nombre réel et COUNTER en tant qu'entier :
- Évitez l'utilisation de caractères spéciaux dans les noms de symboles. Les évaluateurs d'expressions C, FORTRAN, BASIC et Pascal appliquent chacun leurs propres normes pour déterminer ce qu'est un nom de symbole légal. Généralement, seuls les caractères alphanumériques et le trait de soulignement (_) sont reconnus. BASIC accepte certains caractères de déclaration de type à la fin d'un nom, mais pas C, FORTRAN et Pascal.
- Assemblez avec /MX ou /ML pour éviter les conflits dus au cas où vous faites de la programmation en plusieurs langues. Par défaut, l'assembleur convertit tous les symboles en majuscules lorsqu'il génère du code objet. C, cependant, ne fait pas cette conversion. Par conséquent, le débogueur CodeView ne reconnaîtra pas que var dans un programme C et var dans un programme assembleur sont la même variable à moins que vous ne laissiez Case Sense désactivé lorsque vous utilisez le débogueur.
- Si vous accédez aux données de ligne de commande dans le préfixe de segment de programme (PSP), notez que le débogueur CodeView modifie le PSP ; les tabulations, les guillemets et les espaces supplémentaires sont supprimés afin qu'exactement un espace sépare chaque paramètre. Le débogueur conserve les guillemets (ainsi que tout élément cité) pour les lignes de commande fournies avec la commande L.
Vous devez initialiser les données de nombres réels dans les définitions de données. Si vous utilisez ?, l'assembleur considérera la variable comme un entier lorsqu'il générera des informations symboliques. Le débogueur CodeView, à son tour, n'évaluera pas correctement la valeur de la variable.
Assemblage et liaison
L'assembleur prend en charge les options d'assemblage /Zi et /Zd. L'option /Od ne s'applique pas et n'est donc pas prise en charge. Les options de l'assembleur ne sont pas sensibles à la casse. Vous pouvez donc entrer /ZI ou /ZD sur la ligne de commande de l'assembleur pour produire un fichier objet au format CodeView.
Si vous liez votre programme d'assemblage à un module écrit en C (étant sensible à la casse), vous devrez probablement assembler avec /MX ou /ML.
Après l'assemblage, liez avec l'option /CO pour produire un fichier exécutable au format CodeView.
Exemples
MASM /ZI EXAMPLE; LINK /CO EXAMPLE; |
MASM /ZI MOD1; MASM /ZD MOD2; LINK /CO MOD1 MOD2; |
CL /Zi /Od /c /AL prog.c BC /Zi sub1; MASM /ZI /MX sub2; LINK /CO prog sub1 sub2 |
Le premier exemple assemble le fichier source EXAMPLE.ASM et produit le fichier objet EXAMPLE.OBJ, étant au format CodeView. L'éditeur de liens est ensuite appelé avec l'option /CO et produit un fichier exécutable avec la table des symboles et les informations de numéro de ligne requises par le débogueur.
Le deuxième exemple produit le fichier objet MOD1.OBJ, contenant des informations sur les symboles et les numéros de ligne, mais pas de table de symboles. Les fichiers objets sont ensuite liés. Le résultat est un fichier exécutable dans lequel le deuxième module sera plus difficile à déboguer. Ce fichier exécutable, cependant, sera plus petit qu'il ne le serait si les deux modules étaient assemblés avec l'option /ZI.
Le dernier exemple montre comment créer un fichier exécutable en plusieurs langues pouvant être utilisé avec le débogueur CodeView. Le débogueur pourra parcourir différents fichiers source dans la même session, quelle que soit la langue.
Démarrage du débogueur CodeView
Avant de démarrer le débogueur, assurez-vous que tous les fichiers dont il a besoin sont disponibles aux bons endroits. Les fichiers suivants sont recommandés pour le débogage au niveau de la source.
Fichier | Emplacement |
---|---|
CV.EXE | Le fichier programme CodeView peut se trouver dans le répertoire courant ou dans n'importe quel répertoire accessible avec la commande PATH. Par exemple, si vous utilisez une configuration de disque dur, vous pouvez placer CV.EXE dans le répertoire \BIN. Si vous disposez d'une ancienne version du débogueur, veillez à supprimer de temps en temps toutes les copies de CV.EXE. S'il recharge la mauvaise version de ce fichier, votre machine tombera probablement en panne. |
CV.HLP | Si vous souhaitez que l'aide en ligne soit disponible pendant votre session, vous devez avoir ce fichier soit dans le répertoire courant, soit dans n'importe quel répertoire accessible avec la commande PATH. Par exemple, si vous configurez vos fichiers de compilateur sur un disque dur à l'aide du programme SETUP fourni sur le disque de distribution, vous pouvez placer CV.HLP dans le répertoire \BIN. Si le débogueur CodeView ne trouve pas le fichier d'aide, vous pouvez toujours utiliser le débogueur, mais vous verrez un message d'erreur si vous utilisez l'une des commandes d'aide. |
program.EXE | Le fichier exécutable du programme que vous souhaitez déboguer doit se trouver dans le répertoire courant ou dans un unité de disuqe et un répertoire que vous spécifiez dans le cadre de la spécification du fichier de démarrage. Le débogueur CodeView affichera un message d'erreur et ne démarrera que si le fichier exécutable est trouvé. |
source.ext | Normalement, les fichiers source doivent se trouver dans le répertoire courant. Comment (jamais d'extension, si vous spécifiez une spécification de fichier pour le fichier source dépend lors de la compilation, cette spécification fera partie du langage) informations symboliques entreposées dans le fichier exécutable. Par exemple, si vous avez compilé avec le paramètre de ligne de commande DEMO, le débogueur CodeView s'attendra à ce que le fichier source se trouve dans le répertoire en cours. Cependant, si vous avez compilé avec l'argument de ligne de commande \SOURCE\DEMO, le débogueur s'attendra à ce que le fichier source se trouve dans le répertoire \SOURCE. Si le débogueur ne trouve pas le fichier source dans le répertoire spécifié dans le fichier exécutable (généralement le répertoire courant), le programme vous demandera un nouveau répertoire. Vous pouvez soit saisir un nouveau répertoire, soit appuyer sur la touche Enter pour indiquer que vous ne souhaitez pas qu'un fichier source soit utilisé pour ce module. Si aucun fichier source n'est spécifié, vous devez déboguer en mode assemblage. |
Si les fichiers appropriés se trouvent dans les répertoires appropriés, vous pouvez entrer la ligne de commande CodeView au prompt de commande DOS. La ligne de commande a la syntaxe suivante :
CV [options] executablefile [arguments] |
Les options sont un ou plusieurs paramètres. Le executablefile est le nom d'un fichier exécutable à charger par le débogueur. Il doit avoir l'extension .EXE ou .COM. Si vous essayez de charger un fichier non exécutable, le message suivant apparaît :
Not an executable file |
Les programmes compilés et les programmes en langage assembleur contenant des informations symboliques CodeView porteront toujours l'extension .EXE. Les fichiers avec l'extension .COM peuvent être débogués en mode assemblage, mais ils ne peuvent jamais contenir d'informations symboliques.
Les paramètres facultatifs sont des paramètres passés au fichier exécutable. Si le programme que vous déboguez n'accepte pas les paramètres de ligne de commande, vous n'avez pas besoin de passer de paramètres.
Si vous spécifiez le fichier exécutable en tant que nom de fichier sans extension, le débogueur CodeView recherche un fichier avec le nom de base donné et l'extension .EXE. Par conséquent, vous devez spécifier l'extension .COM si vous déboguez un fichier .COM. Si le fichier n'est pas au format CodeView, le débogueur démarre en mode assembleur et affiche le message suivant :
No symbolic information |
Vous devez spécifier un fichier exécutable lorsque vous démarrez le débogueur CodeView. Si vous omettez le fichier exécutable, le débogueur affiche un message indiquant le format de ligne de commande correct.
Lorsque vous donnez au débogueur une ligne de commande valide, le programme exécutable et le fichier source sont chargés, les données d'adresse sont traitées et l'affichage CodeView apparaît. L'affichage initial sera en mode fenêtre ou en mode séquentiel, selon les options que vous spécifiez et le type d'ordinateur dont vous disposez. Par exemple, si vous souhaitez déboguer le programme BENCHMRK.EXE, vous pouvez démarrer le débogueur avec la ligne de commande suivante :
CV BENCHMRK |
Si vous donnez cette ligne de commande sur un IBM Personal Computer, le mode fenêtre sera sélectionné automatiquement. L'affichage ressemblera à l'image suivante :
Si vous donnez la même ligne de commande sur la plupart des ordinateurs non IBM, le mode séquentiel sera sélectionné. Les lignes suivantes apparaissent :
Microsoft (R) CodeView (R) Version 2.0 (C) Copyright Microsoft Corp. 1986, 1987. All rights reserved. > |
Si votre programme est écrit dans un langage de haut niveau, le débogueur CodeView se trouve maintenant au début du code de démarrage précédant votre programme. En mode source, vous pouvez entrer une commande d'exécution (telle que Trace ou Program Step) pour qu'elle s'exécute automatiquement via le code de démarrage jusqu'au début de votre programme. À ce stade, vous êtes prêt à commencer le débogage de votre programme.
Utilisation des options CodeView
Vous pouvez modifier le comportement de démarrage du débogueur en spécifiant des options dans la ligne de commande.
Une option est une séquence de caractères précédée soit d'une barre oblique (/) soit d'un tiret (-). Contrairement aux options de ligne de commande du compilateur, les options de ligne de commande CodeView ne sont pas sensibles à la casse.
Un fichier dont le nom commence par un tiret doit être renommé avant de l'utiliser avec le débogueur CodeView, afin que le débogueur n'interprète pas le tiret comme un drapeau d'option. Vous pouvez utiliser plusieurs options dans une ligne de commande, mais chaque option doit avoir son propre drapeau d'option et des espaces doivent séparer chaque option des autres éléments de la ligne.
Les valeurs par défaut du débogueur CodeView pour les IBM Personal Computers sont différentes des valeurs par défaut dont il dispose pour les autres ordinateurs. Cependant, le débogueur peut ne pas toujours reconnaître la différence entre les ordinateurs et les valeurs par défaut peuvent varier en conséquence.
La liste suivante suggère certaines situations dans lesquelles vous pourriez souhaiter utiliser une option. Si plusieurs conditions s'appliquent, vous pouvez utiliser plusieurs options (dans n'importe quel ordre). Si aucune des conditions ne s'applique, vous n'avez pas besoin d'utiliser d'options.
Option | Condition |
---|---|
/2 | Vous souhaitez utiliser deux moniteurs avec le débogueur CodeView. |
/43 | Vous souhaitez un écran 43 lignes et vous disposez d'un ordinateur IBM PC ou compatible IBM PC avec une carte graphique améliorée (EGA) et un écran couleur amélioré. |
/B | Vous disposez d'un moniteur bicolore, d'une carte graphique couleur et d'un ordinateur IBM PC ou compatible IBM PC. |
/Ccommands | Vous souhaitez que le débogueur CodeView exécute automatiquement une série de commandes lors de son démarrage. |
/D | Vous utilisez un ordinateur compatible IBM PC ne prenant pas en charge certaines fonctions d'interruption d'interruption spécifiques à IBM. |
/E | Vous disposez de mémoire paginée et souhaitez que le débogueur CodeView en profite. |
/F | Vous utilisez un ordinateur compatible IBM pour déboguer un programme n'utilisant pas de graphiques ou plusieurs pages d'affichage vidéo, et vous souhaitez pouvoir voir l'écran de sortie. |
/I | Vous utilisez un ordinateur non compatible IBM et vous souhaitez activer Ctrl+C et Ctrl+Break. |
/M | Une souris est installée sur votre système, mais vous ne souhaitez pas l'utiliser pendant la session de débogage. |
/P | Vous avez un carte vidéo EGA non IBM et rencontrez des problèmes pour exécuter le débogueur. |
/S | Vous déboguez un programme graphique ou un programme utilisant plusieurs pages d'affichage vidéo et vous souhaitez pouvoir voir l'écran de sortie. |
/S | Vous utilisez un ordinateur non compatible IBM et vous souhaitez pouvoir voir l'écran de sortie. |
/T | Vous avez un ordinateur IBM, mais vous souhaitez déboguer en mode séquentiel (par exemple avec redirection). |
/W | Vous disposez d'un ordinateur compatible IBM et vous souhaitez utiliser le mode fenêtre. |
Par exemple, supposons que vous utilisez un ordinateur compatible IBM avec une carte graphique couleur (CGA) et un moniteur bicolore. Le programme que vous déboguez, que vous pourriez nommer GRAPHIX.EXE, trace des points en mode graphique. Vous voulez pouvoir voir l'écran de sortie pendant la session de débogage. Enfin, vous souhaitez pouvoir démarrer le débogueur plusieurs fois sans avoir à vous souvenir de toutes les options, et vous souhaitez exécuter automatiquement le code de démarrage du langage de haut niveau à chaque fois. Vous pouvez créer un fichier de traitement par lot composé de la ligne suivante :
CV /W /B /S /CGmain GRAPHIX |
Utilisation de deux adaptateurs vidéo
Utiliser l'option suivante :
/2 |
L'option /2 permet l'utilisation de deux moniteurs avec le débogueur CodeView. L'affichage du programme apparaîtra sur le moniteur par défaut actuel tandis que l'affichage CodeView apparaîtra sur l'autre moniteur. Vous devez disposer de deux moniteurs et de deux adaptateurs pour utiliser l'option /2. Par exemple, si vous disposez à la fois d'une carte graphique couleur et d'une carte monochrome, vous souhaiterez peut-être configurer la carte vidéo CGA comme carte vidéo par défaut. Vous pouvez ensuite déboguer un programme graphique avec l'affichage graphique apparaissant sur le moniteur graphique. La prise en charge de la souris Microsoft sera désactivée sur l'écran de débogage si vous utilisez cette option.
Utilisation du mode 43 lignes de l'adaptateur EGA
Utiliser l'option suivante :
/43 |
Si vous disposez d'une carte graphique améliorée (EGA) et d'un moniteur monochrome ou d'un moniteur à affichage couleur amélioré (ou d'un moniteur compatible), vous pouvez utiliser l'option /43 pour activer un mode texte de 43 lignes sur 80 colonnes. Vous ne pouvez pas utiliser ce mode avec d'autres moniteurs, tels que CGA ou un adaptateur monochrome (MA). Le débogueur CodeView ignorera l'option s'il ne détecte pas d'EGA.
Le mode 43 lignes de l'EGA fonctionne de la même manière que le mode normal 25 lignes sur 80 colonnes utilisé par défaut sur l'EGA, le CGA et le MA. L'avantage du mode 43 lignes est que plus de texte tient sur l'affichage CodeView ; l'inconvénient est que le texte est plus petit et plus difficile à lire. Si vous avez un EGA, vous pouvez expérimenter pour voir quelle taille vous préférez.
Exemple
CV /43 CALC CALC.DAT |
L'exemple ci-dessus démarre le débogueur CodeView en mode 43 lignes si vous disposez d'une carte vidéo EGA et d'un moniteur couleur ou monochrome amélioré. L'option sera ignorée si vous n'avez pas le matériel pour la prendre en charge.
Démarrer avec un écran noir et blanc
Utiliser l'option suivante :
/B |
L'option /B force le débogueur CodeView à s'afficher en deux couleurs même si vous disposez d'un adaptateur de couleurs (CGA, EGA ou compatible). Par défaut, le débogueur vérifie au démarrage quel type de carte graphique est connecté à votre ordinateur. Si le débogueur détecte un MA, il s'affiche en deux couleurs. S'il détecte un adaptateur couleur, il s'affiche en plusieurs couleurs.
Si vous utilisez un moniteur bicolore avec un CGA ou un EGA, vous souhaiterez peut-être désactiver la couleur. Les moniteurs affichant uniquement deux couleurs (généralement vert et noir ou ambre et noir) tentent souvent d'afficher des couleurs avec différents motifs de hachures croisées ou dans des nuances de gris de la couleur d'affichage. Dans les deux cas, vous pouvez trouver l'affichage plus facile à lire si vous utilisez l'option /B pour forcer l'affichage en noir et blanc. La plupart des moniteurs bicolores ont toujours quatre distinctions de couleur : arrière-plan (noir), texte normal, texte haute intensité et texte vidéo inversé.
Exemple
CV /B CALC CALC.DAT |
L'exemple ci-dessus démarre le débogueur CodeView en mode noir et blanc. C'est le seul mode disponible si vous avez une MA. L'affichage est généralement plus facile à lire dans ce mode si vous avez un CGA et un moniteur bicolore.
Spécification des commandes de démarrage
Utiliser l'option suivante :
/Ccommands |
L'option /C vous permet de spécifier une ou plusieurs commandes étant exécutées automatiquement au démarrage. Vous pouvez utiliser ces options pour invoquer le débogueur à partir d'un fichier du traitement par lot ou MAKE. Chaque commande est séparée de la commande précédente par un point-virgule.
Si une ou plusieurs de vos commandes de démarrage ont des paramètres nécessitant des espaces entre eux, vous devez placer l'option entière entre guillemets doubles. Sinon, le débogueur interprétera chaque paramètre comme un paramètre de ligne de commande CodeView distinct plutôt que comme un paramètre de commande de débogage.
Toute option de démarrage utilisant le symbole inférieur à (<) ou supérieur à (>) doit être placée entre guillemets doubles même si elle ne nécessite pas d'espaces. Cela garantit que la commande de redirection sera interprétée par le débogueur CodeView plutôt que par DOS. Toute option de démarrage utilisant le symbole inférieur à (<) ou supérieur à (>) doit être placée entre guillemets doubles même si elle ne nécessite pas d'espaces. Cela garantit que la commande de redirection sera interprétée par le débogueur CodeView plutôt que par DOS.
Exemples
CV /CGmain CALC CALC.DAT |
L'exemple ci-dessus charge le débogueur CodeView avec CALC comme fichier exécutable et CALC.DAT comme paramètre.
Au démarrage, le débogueur exécute le code de démarrage du langage de haut niveau avec la commande Gmain. Comme aucun espace n'est requis entre la commande CodeView (G) et son argument (main), l'option n'est pas entre guillemets doubles.
CV "/C;S&;G INTEGRAL;DS ARRAYX L 20" CALC CALC.DAT |
L'exemple ci-dessus charge le même fichier avec le même paramètre que le premier exemple, mais la liste de commandes est plus étendue. Le débogueur démarre en mode mixte source/assembleur (S&). Il exécute la routine INTEGRAL (G INTEGRAL), puis vide 20 nombres réels courts commençant à l'adresse de la variable ARRAYX (DS ARRAYX L 20). Étant donné que plusieurs des commandes utilisent des espaces, l'option entière est entourée de guillemets doubles.
CV "/C<INPUT.FIL" CALC CALC.DAT |
L'exemple ci-dessus charge le même fichier et paramètre que le premier exemple, mais la commande de démarrage demande au débogueur d'accepter les entrées du fichier INPUT.FIL plutôt que celles du clavier. Bien que l'option n'inclue aucun espace, elle doit être placée entre guillemets doubles afin que le symbole inférieur à soit lu par le débogueur CodeView plutôt que par DOS.
Gestion du piégeage des interruptions
Utiliser l'option suivante :
/D /I |
L'option /D désactive l'interruption non masquable (NMI) et l'interruption 8259. Si vous utilisez un IBM PC Convertible, Tandy 1000 ou AT&T 6300 Plus et que vous rencontrez des pannes système lors de l'utilisation du débogueur CodeView, essayez de commencer avec l'option /D. Pour activer le mode fenêtre, utilisez /W avec /D ; sinon le mode séquentiel est réglé automatiquement. Notez que puisque cette option désactive l'interception d'interruption, Ctrl+C et Ctrl+Break ne fonctionneront pas et une interruption externe peut se produire pendant une opération de trace. Si cela se produit, vous pouvez vous retrouver à tracer le gestionnaire d'interruption au lieu de votre programme.
L'option /I force le débogueur à gérer l'interception des interruptions NMI et 8259. Utilisez cette option pour activer Ctrl+C et Ctrl+Break sur des ordinateurs non reconnus comme étant compatibles IBM par le débogueur, des ordinateurs tels que Eagle PC. Le mode fenêtre est défini automatiquement avec l'option /I ; vous n'avez pas à spécifier /W. L'utilisation de l'option /I vous permet d'arrêter l'exécution du programme à tout moment pendant que vous utilisez le débogueur CodeView.
Utilisation de la mémoire étendue
Utiliser l'option suivante :
/E |
La mémoire étendue fait référence à la mémoire rendue accessible conformément à la spécification Microsoft/Lotus/Intel EMS. Cet accès fournit à votre système une mémoire supérieure à la limitation MS-DOS de 640 Ko sur la RAM. Cependant, étant donné que MS-DOS ne reconnaîtra pas cette mémoire supplémentaire, les programmes peuvent utiliser la mémoire paginée de manière limitée.
L'option /E permet l'utilisation de la mémoire paginée. Si la mémoire paginée est présente, le débogueur CodeView l'utilisera pour entreposer les informations symboliques du programme. Cela peut représenter jusqu'à 85% de la taille du fichier exécutable du programme et représente l'espace étant autrement occupé dans la mémoire principale.
Cette option active uniquement la mémoire paginée, pas la mémoire étendue. La mémoire étendue utilise des instructions en mode protégé, plutôt que la spécification Microsoft/Lotus/Intel pour la pagination de la mémoire.
Réglage du mode d'échange d'écran
Utiliser l'option suivante :
/F /S |
Le débogueur CodeView vous permet d'aller et venir rapidement entre l'écran de sortie, contenant la sortie de votre programme, et l'écran de débogage, contenant l'affichage de débogage. Le débogueur peut gérer cet échange d'écran de deux manières : le retournement d'écran ou l'échange d'écran. L'option /F (retournement d'écran) et l'option /S (permutation d'écran) vous permettent de choisir la méthode à partir de la ligne de commande. Si aucune méthode n'est spécifiée (possible uniquement sur les ordinateurs non IBM), la commande Screen Exchange ne fonctionnera pas. Aucun échange d'écran n'est la valeur par défaut pour les ordinateurs non IBM. Le retournement d'écran est la valeur par défaut pour les ordinateurs IBM équipés d'adaptateurs graphiques, et la permutation d'écran est la valeur par défaut pour les ordinateurs IBM équipés d'adaptateurs monochromes. Le retournement d'écran utilise les pages d'affichage vidéo de la carte graphique pour entreposer chaque écran de texte. Les pages d'affichage vidéo sont une mémoire tampon spéciale réservée à plusieurs écrans de sortie vidéo. Cette méthode est plus rapide et utilise moins de mémoire que l'échange d'écran. Cependant, le retournement d'écran ne peut pas être utilisé avec un MA, ni pour déboguer des programmes produisant des graphiques ou utilisent les pages d'affichage vidéo. De plus, le retournement d'écran du débogueur CodeView fonctionne uniquement avec les micro-ordinateurs IBM et compatibles IBM.
L'échange d'écran n'a aucune des limitations du retournement d'écran, mais est beaucoup plus lent et nécessite plus de mémoire. Dans la méthode d'échange d'écran, le débogueur CodeView crée un tampon en mémoire et l'utilise pour entreposer l'écran n'étant pas utilisé. Lorsque l'utilisateur demande l'autre écran, le débogueur remplace l'écran du tampon d'affichage par celui du tampon d'entreposage.
Lorsque vous utilisez l'échange d'écran, la taille de la mémoire tampon est de 16 Ko pour toutes les cartes. La quantité de mémoire utilisée par le débogueur CodeView est augmentée de la taille de la mémoire tampon.
Le tableau suivant indique le mode d'échange par défaut (permutation ou retournement) et le mode d'affichage par défaut (séquentiel ou fenêtre) pour différentes configurations :
Ordinateur | Adaptateur d'affichage | Modes par défaut | Modes alternatif |
---|---|---|---|
IBM | CGA ou EGA | /F /W | /S si votre programme utilise des pages d'affichage vidéo ou des graphiques ; /T pour le mode séquentiel. |
IBM- | CGA ou EGA | /T | /W pour le mode fenêtre ; /F pour un retournement compatible avec l'écran avec des programmes de texte, ou /S pour un échange d'écran avec des programmes utilisant des pages d'affichage vidéo ou des graphiques. |
IBM | MA | /S /W | /T pour le mode séquentiel |
IBM | MA | /T | /W pour le mode fenêtre ; /S pour l'échange d'écran |
Non compatible | Quelconque | /T | /S pour l'échange d'écran |
Si vous n'êtes pas sûr que votre ordinateur soit complètement compatible IBM, vous pouvez expérimenter. Si le système d'entrée/sortie de base (BIOS) de votre ordinateur n'est pas suffisamment compatible, le débogueur CodeView peut ne pas fonctionner avec l'option /F.
Si vous spécifiez l'option /F avec un MA, le débogueur ignorera l'option et utilisera l'échange d'écran. Si vous essayez d'utiliser le retournement d'écran pour déboguer un programme produisant des graphiques ou utilise les pages d'affichage vidéo, vous pouvez obtenir des résultats inattendus et devoir recommencer avec l'option /S.
Example
CV /F CALC CALC.DAT |
L'exemple ci-dessus démarre le débogueur CodeView avec un retournement d'écran. Vous pouvez utiliser cette ligne de commande si vous disposez d'un ordinateur compatible IBM PC et que vous souhaitez remplacer le mode d'échange d'écran par défaut afin d'utiliser moins de mémoire et de changer d'écran plus rapidement. L'option ne serait pas nécessaire sur un ordinateur IBM, puisque le retournement d'écran est la valeur par défaut.
Exemple
CV /S GRAFIX |
L'exemple ci-dessus démarre le débogueur avec un échange d'écran. Vous pouvez utiliser cette ligne de commande si votre programme utilise le mode graphique.
Ignorer la souris
Utiliser l'option suivante :
/M |
Si une souris est installée sur votre système, vous pouvez demander au débogueur CodeView de l'ignorer à l'aide de l'option /M. Vous devrez peut-être utiliser cette option si vous déboguez un programme qui utilise la souris et que votre souris n'est pas une souris Microsoft. Cela est dû à un conflit entre l'utilisation de la souris par le programme et son utilisation par le débogueur. L'utilisation de /M peut éventuellement désactiver l'utilisation de la souris par le programme, ainsi que celle de CodeView.
Le même conflit entre le programme et le débogueur s'applique si vous n'utilisez pas le programme de pilote de souris Microsoft actuel (MOUSE.SYS), étant inclus sur les disques de distribution de certains produits Microsoft. Vous voudrez peut-être remplacer votre ancien programme de pilote de souris par la version mise à jour. Vous pourrez alors utiliser la souris avec le débogueur CodeView et le programme que vous déboguez.
Extension de la compatibilité EGA
Utiliser l'option suivante :
/P |
L'utilisation de l'option /P peut permettre au débogueur CodeView de s'exécuter correctement en mode fenêtre sur une version non IBM de la carte graphique améliorée (EGA).
Normalement, le débogueur enregistre et restaure les registres de palette d'une carte graphique améliorée. Cependant, bien que cette procédure fonctionne parfaitement avec un IBM EGA, elle peut créer des conflits avec d'autres EGA. L'option /P empêche l'enregistrement et la restauration des registres de palette, et peut donc améliorer la compatibilité.
Les symptômes pouvant indiquer la nécessité d'utiliser /P incluent l'écran de débogage commençant dans des couleurs non standard et le débogueur semblant se bloquer en mode fenêtre.
L'option /P peut entraîner la perte de certaines couleurs du programme en cours de débogage chaque fois que vous basculez entre l'écran de débogage et l'écran de sortie. Par conséquent, n'utilisez pas l'option /P sauf si nécessaire.
Activation du mode fenêtre ou séquentiel
Utiliser l'option suivante :
/T /W |
Le débogueur CodeView peut fonctionner en mode fenêtre ou en mode séquentiel. Le mode fenêtre affiche jusqu'à quatre fenêtres, vous permettant de voir simultanément différents aspects du programme de session de débogage. Vous pouvez également utiliser une souris en mode fenêtre. Le mode fenêtre nécessite un micro-ordinateur IBM ou compatible IBM. Le mode séquentiel fonctionne avec n'importe quel ordinateur et est utile avec les commandes de redirection. Les informations de débogage sont affichées séquentiellement à l'écran.
Si vous n'êtes pas sûr que votre ordinateur soit complètement compatible IBM, vous pouvez expérimenter les options. Si le BIOS de votre ordinateur n'est pas suffisamment compatible, vous ne pourrez peut-être pas utiliser le mode fenêtre (l'option /W).
Bien que le mode fenêtre soit plus pratique, toute opération de débogage pouvant être effectuée en mode fenêtre peut également être effectuée en mode séquentiel.
Exemples
CV /W SIEVE |
L'exemple ci-dessus démarre le débogueur CodeView en mode fenêtre. Vous souhaiterez probablement utiliser l'option /W si vous disposez d'un ordinateur compatible IBM PC, car le mode séquentiel par défaut est moins pratique pour la plupart des tâches de débogage.
CV /T SIEVE |
L'exemple ci-dessus démarre le débogueur en mode séquentiel. Vous pouvez utiliser cette option si vous disposez d'un ordinateur IBM PC et que vous avez une raison particulière d'utiliser le mode séquentiel. Par exemple, le mode séquentiel fonctionne généralement mieux si vous redirigez votre sortie de débogage vers un terminal distant.
Débogage de programmes volumineux
Étant donné que le débogueur CodeView doit résider en mémoire avec le programme que vous déboguez, il se peut qu'il n'y ait pas assez de place pour déboguer certains programmes volumineux pouvant autrement s'exécuter uniquement en mémoire. Cependant, il existe au moins trois façons de contourner les limitations de mémoire :
- Si vous disposez d'une mémoire paginée, utilisez l'option /E décrite précédemment. Cela permettra à CodeView de placer la table des symboles dans la mémoire paginée, libérant ainsi une bonne partie de la mémoire principale.
- Étant donné que CodeView prend désormais en charge le débogage des programmes en recouvrement, vous pouvez réduire considérablement la quantité de mémoire requise pour exécuter votre programme en utilisant des recouvrements lorsque vous liez votre programme.
- Économisez de l'espace en utilisant /Zi avec les modules sur lesquels vous prévoyez de vous concentrer uniquement dans la session de débogage, en utilisant /Zd avec d'autres modules.
Travailler avec des versions plus anciennes de l'assembleur
Vous pouvez exécuter le débogueur CodeView avec des fichiers développés à l'aide d'anciennes versions des assembleurs Microsoft ou IBM (antérieures à 5.0). Étant donné que les anciennes versions n'écrivent pas de numéros de ligne dans les fichiers objet, certaines fonctionnalités du débogueur CodeView ne seront pas disponibles lorsque vous déboguez des programmes développés avec les anciens assembleurs. Les considérations suivantes s'appliquent, en plus des considérations mentionnées précédemment.
La procédure d'assemblage et de débogage des fichiers .EXE à l'aide d'anciennes versions de l'assembleur est résumée ci-dessous. Le débogueur peut être utilisé sur les fichiers .EXE ou .COM, mais vous ne pouvez afficher que les informations symboliques dans les fichiers .EXE.
- Dans votre fichier source, déclarez publics tous les symboles, tels que les étiquettes et les variables, que vous souhaitez référencer dans le débogueur. Si le fichier est petit, vous pouvez déclarer tous les symboles publics.
- Comme mentionné précédemment, assurez-vous que le segment de code porte le nom de classe CODE.
- Assemblez comme d'habitude. Aucune option spéciale n'est requise et toutes les options d'assemblage sont autorisées.
- Utilisez LINK, version 3.6 ou ultérieure. N'utilisez pas l'éditeur de liens fourni avec les anciennes versions d'assembleur. Utilisez l'option /CODEVIEW lors de la liaison.
- Déboguer en mode assemblage (il s'agit du mode de démarrage par défaut si le débogueur ne parvient pas à trouver les informations de numéro de ligne). Vous ne pouvez pas utiliser le mode source pour le débogage, mais vous pouvez charger le fichier source dans la fenêtre d'affichage et l'afficher en mode source. Toutes les étiquettes ou variables que vous avez déclarées publiques dans le fichier source peuvent être affichées et référencées par nom plutôt que par adresse. Cependant, ils ne peuvent pas être utilisés dans les expressions car les informations de type ne sont pas écrites dans le fichier objet.