Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 11-01-2021 13:23:24

Lupa
Membre
Distrib. : Debian Stretch 4.9.110-3+deb9u6 / Buster
Noyau : 4.9.0-8-amd64 (Stretch) Buster : 5.4.0-0.bpo.2-amd
(G)UI : xfce
Inscription : 28-06-2017

Besoin d'aide sous codium (vcode)

Bonjour à tous et bonne année smile

Je reprends le C après plus de vingt ans.
J'ai opté pour codium, donc vcode.

Mais...
Comment déboguer à l'intérieur de l'IDE ? hmm
J'ai réussi à franciser un peu (ça aide...). Mais j'ai besoin :
- de fixer des points d'arrêt
- afficher l'état d'une variable
- voir où ça plante.

Là, par exemple, j'ai une "Erreur de segmentation". Mais où ?
J'ai installé l'extension de Michelson pour déboguer... mais l'IDE me dit qu'elle ne la trouve pas. Elle n'est pas dans le path (l'IDE dit ça en Anglais).

Où trouver des tutos sur l'IDE elle-même ?
Parce que les options de gcc en mode debug, c'est bien beau, mais, dans l'IDE, ce serait plus ergonomique...

J'ignore si j'ai été clair...
Merci sad

Mais... Personne ne programme, ici, en C ?
Tout seul, on avance pas... Vous programmez avec  quoi, vous ?
Merci sad

Dernière modification par Lupa (12-01-2021 10:51:49)

Hors ligne

#2 Hier 00:00:54

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : Besoin d'aide sous codium (vcode)

Bonjour smile

Ça m'arrive de programmer en Perl.

Mais, j'essaye de progresser en Scheme avec Guile.

Scheme, et sa variante Racket qui vient avec son IDE visuel, est vraiment pas mal si tu veux revoir ta façon de programmer.

Cela dit, Python est un langage à la mode.

Et Emacs comme IDE, c'est pas mal aussi. smile

En ligne

#3 Hier 11:43:04

Lupa
Membre
Distrib. : Debian Stretch 4.9.110-3+deb9u6 / Buster
Noyau : 4.9.0-8-amd64 (Stretch) Buster : 5.4.0-0.bpo.2-amd
(G)UI : xfce
Inscription : 28-06-2017

Re : Besoin d'aide sous codium (vcode)

Bonjour smile

Donc, avec Emacs, j'aurai une IDE avec des points d'arrêt sur mon code ? Génial... C'est exactement de cela dont j'ai besoin.

Hors ligne

#4 Hier 11:57:54

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : Besoin d'aide sous codium (vcode)

Après avoir lancé gdb dans emacs, je pense que c'est possible.

En ligne

#5 Hier 12:09:19

naguam
Membre
Lieu : Quelque part
Distrib. : Plusieurs
Noyau : Ça dépend
(G)UI : La CLI il n'y a que ça de vrai!
Inscription : 13-06-2016

Re : Besoin d'aide sous codium (vcode)

J'utilises pas vscode, mais je sais qu'il a un wrapper à gdb intégré. Tu peux débugguer dans l'interface. Seulement comme je n'utilises pas vscode (mais des amis l'utilisent) je sais pas ou mais la doc doit pouvoir se trouver en ligne.

Pour les segfault je te conseilles de compiler avec l'option -g voire -ggdb3, puis d'executer avec valgrind. Ça te donne le nombre de contexte d'erreur (car une erreur peut se répéter dans une boucle) les memory leak, etc.
Egalement je te conseilles de compiler avec -Wall -Wextra pour avoir des Warnings plus verbeux.

cc -Wall -Wextra -ggdb3 source.c

valgrind ./a.out

Exemple de code qui est certain de segfault.

int main(void)
{
    int *i;

    i[2] = 34;
    return 0;
}


==84382== Memcheck, a memory error detector
==84382== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==84382== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info
==84382== Command: ./a.out
==84382==
==84382== Use of uninitialised value of size 8
==84382==    at 0x401112: main (source.c:5)
==84382==
==84382== Invalid write of size 4
==84382==    at 0x401112: main (source.c:5)
==84382==  Address 0x8 is not stack'd, malloc'd or (recently) free'd
==84382==
==84382==
==84382== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==84382==  Access not within mapped region at address 0x8
==84382==    at 0x401112: main (source.c:5)
==84382==  If you believe this happened as a result of a stack
==84382==  overflow in your program's main thread (unlikely but
==84382==  possible), you can try to increase the size of the
==84382==  main thread stack using the --main-stacksize= flag.
==84382==  The main thread stack size used in this run was 8388608.
==84382==
==84382== HEAP SUMMARY:
==84382==     in use at exit: 0 bytes in 0 blocks
==84382==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==84382==
==84382== All heap blocks were freed -- no leaks are possible
==84382==
==84382== Use --track-origins=yes to see where uninitialised values come from
==84382== For lists of detected and suppressed errors, rerun with: -s
==84382== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
Segmentation fault (core dumped)
 

Mais corriger les warnings aident souvent à corriger les segfault avant qu'ils arrivent si la logique est bonne.
là dans l'exemple j'avais :

source.c: In function ‘main’:
source.c:5:6: warning: ‘i’ is used uninitialized in this function [-Wuninitialized]
    5 |     i[2] = 34;
      |      ^
 

Pointeur non initialisé, ça peut donner la puce à l'oreille, mais si il aurait pu être initialisé et segfaulter quand même.

Il dit erreur ligne 5 dans la fonction main du fichier source.c, en effet i[2] = 34; c'est pas valide, aucune mémoire a été allouée au pointeur (tableau dynamique).

Mais j'ai aucun leak mémoire

0 allocs, 0 frees, 0 bytes allocated

Il faut autant d'alloc que de free.

Valgrind a pas mal d'options.
Gdb est bien aussi.

Dernière modification par naguam (Hier 12:42:55)

Hors ligne

#6 Hier 13:08:17

SuShY
CA Debian-Facile
Lieu : Chartres
Distrib. : Debian Sid x86_64
Noyau : Linux > 5.10.x-x-amd64
(G)UI : i3WM - 4.19-1
Inscription : 06-01-2018
Site Web

Re : Besoin d'aide sous codium (vcode)

Hello, pour débuguer avec Codium ou VS Code, il faut que tu y paramètre une configuration en lien avec ton langage de code.
Onglet Exécuter puis tout en haut dans exécuter tu créé ta configuration.

Hors ligne

Pied de page des forums