DOMANDA Mi insegnate a utilizzare il Debugger ??

Giovanni Montanaro

Nuovo Utente
15
0
Salve,

Nei vari libri di testo ma anche a lezione una delle cose che spesso non insegnano è debuggare. Personalmente come IDE utilizzo Visual Studio 2017 per Programmare in C.
Gentilmente mi potete fare esempi e farmi capire una volta per tutte come utilizzare questo strumento chiamato Debugger ??


Grazie a tutti,

Giovanni.
 
Ultima modifica da un moderatore:

Skills07

Head of Development
Staff Forum
Utente Èlite
35,278
11,431
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
il debugger su visual studio è molto semplice, imposti un punto di interruzione nel codice che hai scritto cliccando sulla riga o col tasto destro inserisci punto di interruzione.
Poi in automatico quando esegui il codice si fermerà li e potrai ispezionare il valore che hanno preso le tue variabili etc etc, e premendo f10 esegui un'istruzione per volta per vedere che tutto sia corretto.
Questo significa debuggare.
 

Hobet

Utente Attivo
609
222
CPU
i5 6600k
Dissipatore
AIO H100
Scheda Madre
ASUS z170 Deluxe
HDD
1 WD Blue 1 TB; evo 850 500gb
RAM
Vengeance 4x4
GPU
GTX 1070ti MSI
Audio
Nope
Monitor
MG278Q
Case
750D Corsair
Net
Fastweb 200/30
OS
PucyBuntu
Salve,

Nei vari libri di testo ma anche a lezione una delle cose che spesso non insegnano è debuggare. Personalmente come IDE utilizzo Visual Studio 2017 per Programmare in C.
Gentilmente mi potete fare esempi e farmi capire una volta per tutte come utilizzare questo strumento chiamato Debugger ??


Grazie a tutti,
Giovanni.
Come prima cosa smetti di usare visual studio, C lo si deve imparare con un editor non un ide, come seconda cosa compila il tutto con GCC e il debug fallo da terminale con GDB, si da terminale perchè devi farti le ossa. Poi chissà se in futuro dovrai lavorare ad un progetto corposo ovvio che userai un ide, ma per impararlo fai come dico io.
 
  • Mi piace
Reazioni: Utente 125751

Andretti60

Utente Èlite
6,440
5,091
Come prima cosa smetti di usare visual studio, C lo si deve imparare con un editor non un ide, come seconda cosa compila il tutto con GCC e il debug fallo da terminale con GDB, si da terminale perchè devi farti le ossa. Poi chissà se in futuro dovrai lavorare ad un progetto corposo ovvio che userai un ide, ma per impararlo fai come dico io.
Ma neanche per sogno. E lo dice uno che ha iniziato a debuggare con db e gdb quasi 40 anni fa.
Sarebbe come dire che per imparare a guidare bisogna iniziare con una Ford T (1908) con partenza a manovella.
Nel nostro settore si dice "mai reinventare la ruota". Quello che e' passato, e' passato, se c'e' qualcosa di meglio da usare, lo si usa. Imparare a usare gdb non aiuta per nulla a usare un debugger avanzato in un IDE, non aiuta nemmeno a capire cosa sia un debugger, e' solo frustrante da usare e qui c'e' gente che NON SA la differenza tra un puntatore e un vettore, hanno meglio da studiare che rimasugli del passato.
 

filoippo97

Utente Èlite
14,067
7,617
CPU
Intel Core I7 4930K @4.5GHz
Dissipatore
EKWB supremacy nickel
Scheda Madre
ASUS Rampage IV Black Edition
HDD
OCZ vertex 4 512GB | WD RE4 Enterprise Storage 2TB
RAM
16GB Corsair Dominator Platinum 2133MHz cas9 OC @2400MHz 9-11-11-31-2 1.65V
GPU
2-way SLI GTX 780Ti DirectCUII OC
Audio
TEAC UD-503 MUSES + HiFiMan HE-560 V2 + Anaview AMS1000 + Tannoy Revolution XT8F
Monitor
ASUS VG278HR 144Hz 3D 1920x1080p
PSU
Corsair AX1200i Fully sleeved red
Case
Corsair Graphite 760T Arctic White
Periferiche
Corsair K95 | Steelseries Rival
OS
windows 10 Pro
Ma neanche per sogno. E lo dice uno che ha iniziato a debuggare con db e gdb quasi 40 anni fa.
Sarebbe come dire che per imparare a guidare bisogna iniziare con una Ford T (1908) con partenza a manovella.
Nel nostro settore si dice "mai reinventare la ruota". Quello che e' passato, e' passato, se c'e' qualcosa di meglio da usare, lo si usa. Imparare a usare gdb non aiuta per nulla a usare un debugger avanzato in un IDE, non aiuta nemmeno a capire cosa sia un debugger, e' solo frustrante da usare e qui c'e' gente che NON SA la differenza tra un puntatore e un vettore, hanno meglio da studiare che rimasugli del passato.
concordo, visual studio é ad oggi tra l'altro l'ide piú potente in circolazione per la programmazione, in particolar modo per C# ma anche C ed altri, ha utilissime funzioni che permettono di testare il codice e non mi riferisco solo al debugger quanto anche agli unit test, che in molti altri ide devi farli con programmi separati.
Chiunque voglia programmare seriamente o imparare a farlo con questi linguaggi usa visual studio, farlo da editor come é giá stato detto non é altro che frustrante anche perché manco puoi debuggare parti di codice, puoi solo vedere se funziona o meno alla fine, e se non funziona (9 casi su 10) c'é da spararsi.
 
  • Mi piace
Reazioni: Giovanni Montanaro

BAT

Moderatore
Staff Forum
Utente Èlite
22,668
11,450
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Però senza avere precedenti esperienze di programmazione ed al primo corso universitario, perde più tempo ad imparare ad usare decentemente VS che a preparare l'esame. Tra l'altro per quanto tecnica obsoleta, l'inserimento di semplici istruzioni di stampa del contenuto delle variabili è la prima, seppur primitiva, tecnica di debugging.
Ovvio che per programmi/progetti un po' più complessi poi ci si affidi ad altro, dipende molto dal livello già acquisito di esperienza del neofito
 

Hobet

Utente Attivo
609
222
CPU
i5 6600k
Dissipatore
AIO H100
Scheda Madre
ASUS z170 Deluxe
HDD
1 WD Blue 1 TB; evo 850 500gb
RAM
Vengeance 4x4
GPU
GTX 1070ti MSI
Audio
Nope
Monitor
MG278Q
Case
750D Corsair
Net
Fastweb 200/30
OS
PucyBuntu
Però senza avere precedenti esperienze di programmazione ed al primo corso universitario, perde più tempo ad imparare ad usare decentemente VS che a preparare l'esame. Tra l'altro per quanto tecnica obsoleta, l'inserimento di semplici istruzioni di stampa del contenuto delle variabili è la prima, seppur primitiva, tecnica di debugging.
Ovvio che per programmi/progetti un po' più complessi poi ci si affidi ad altro, dipende molto dal livello già acquisito di esperienza del neofito
Ed infatti è qui che io andavo a parare, qui non si parla di quali tecnologie usare per avviare un progetto ma cosa usare per imparare al meglio in ambito accademico, e come sapete in ambito accademico per imparare qualcosa si reinventa sempre la ruota, altrimenti al corso di algoritmi usiamo STL e siamo tutti felici.

gdb non aiuta per nulla

Qui hai toppato, gdb è un tool e come ogni tool se non lo sai usare ovvio che non ti aiuta.
Post unito automaticamente:


@filoippo97

perché manco puoi debuggare parti di codice, puoi solo vedere se funziona o meno alla fine, e se non funziona (9 casi su 10) c'é da spararsi.

Suvvia di cosa stai parlando il modo in cui hai posto questa frase è errata, l'inesperienza fa da maestra. C è un linguaggio dalla sintassi relativamente semplice l'astrazione sua è minore, in tutti i corsi di laurea lo si impara da editor con gdb, anche perchè poi si estende lo conoscenze nel corso di sistemi operativi con ASM. Perciò fargli usare un IDE sarebbe la scelta peggiore.
 
Ultima modifica:
  • Mi piace
Reazioni: Utente 125751

Andretti60

Utente Èlite
6,440
5,091
Però senza avere precedenti esperienze di programmazione ed al primo corso universitario, perde più tempo ad imparare ad usare decentemente VS che a preparare l'esame. ...
Certamente no. Usare il debugger in VS e' semplicissimo, devi solo imparare a cliccare sul bordo del pannello del codice per mettere un breakpoint, e usare pochi tasti (tipicamente F10 e F11) per avanzare di un istruzione, poi basta guardare la finestra delle variabili per guardarne il loro valore, o basta passare il mouse su una variabile per vederne il valore. E' quanto basta per iniziare, si impara in 10 minuti e se lo si facesse si eviterebbe il 90% delle domande in questo forum (non ho fatto statistica, ho tirato un numero a casaccio)
Post unito automaticamente:

... Qui hai toppato, gdb è un tool e come ogni tool se non lo sai usare ovvio che non ti aiuta.
...
Stai parlando con uno che ha usato gdb per quasi vent'anni su sistemi UNIX, editando con vi e emacs, su semplici terminali ... lo so usare ancora, ma e' enormemente piu' semplice da imparare e usare il debugger in un IDE. Se vuoi restare all'eta' della pietra, contento tu.
Post unito automaticamente:

Mamma mia che dinosauri che siete :) probabilmente sono piu' vecchio di tutti voi (sto gia' pensando alla pensione) ma la vedo molto piu' avanti. Mi ricordate i miei professori delle superiori che ci facevano usare il regolo calcolatore invece della calcolatrice tascabile (appena uscite). Sapete quante volte ho poi dovuto usare il regolo e le tavole trigonometriche e logaritmiche in vita mia, sia all'universita' che al lavoro?

Ma che ci avete contro gli IDE? Imparare a programmare ci vuole una vita. Imparare a usare un IDE (uno qualsiasi) ci vogliono poche ore. Forse e' per questo che in Italia siamo ancora cosi' indietro, continuiamo a vivere nel Jurassico.
 
Ultima modifica:

BAT

Moderatore
Staff Forum
Utente Èlite
22,668
11,450
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Contro gli IDE? ma quando mai!
ti chiedo: ma davvero giusto pe imparare è conveninete usare una balena come VS invece dell'acciuga GCC + Codeblocks? IDE minimale ma completo (anche di debugger) e ambiente leggerissimo invece di tonnellate di gigabyte che al principiante non servono?:varie13:
 
Ultima modifica:
  • Mi piace
Reazioni: Utente 125751

Andretti60

Utente Èlite
6,440
5,091
Contro gli IDE? ma quando mai!
ti chiedo: ma davvero giusto pe rimparare è conveninete usare una balena come VS invece dell'acciuga GCC + Codeblocks? IDE minimale ma completo (anche di debugger) e ambiente leggerissimo invece di tonnellate di gigabyte che al principiante non servono?:varie13:
E infatti io non ho parlato di VS, ho detto testualmente "uno qualsiasi"
 

Hobet

Utente Attivo
609
222
CPU
i5 6600k
Dissipatore
AIO H100
Scheda Madre
ASUS z170 Deluxe
HDD
1 WD Blue 1 TB; evo 850 500gb
RAM
Vengeance 4x4
GPU
GTX 1070ti MSI
Audio
Nope
Monitor
MG278Q
Case
750D Corsair
Net
Fastweb 200/30
OS
PucyBuntu
Ma che poi io sono il primo che usa gli IDE perchè sono comodi, ma li uso a lavoro o per progetti personali. Che ne so se voglio studiarmi javascript inizio da vanilla javascript non da un framework, evvero riscrivo la ruota ma il mio obiettivo è studiare javascript. Il suo obiettivo è studiare il C, il C non lo studi con l'ide perchè ti vizia, senza IDE commetti tantissimi errori e ci sbatti pure la testa e perdi tanto tempo, ma ti fai le ossa e capisci il perchè stai sbagliando perchè effettivamente lo stai studiando a 360 non solo la sintassi, in caso scrivi spazzatura ti viene spontaneo arrangiare il codice creare un pattern, cercare soluzioni a problemi, visto che ne hai. Non capisco perchè sia cosi ostico da capire.

Che poi sto notando che la gente che dice di non usarlo è gente che ci ha sbattuto la testa e l ha imparato senza IDE, lui non lo ha mai studiato il C.
 
Ultima modifica:
  • Mi piace
Reazioni: Utente 125751

Andretti60

Utente Èlite
6,440
5,091
... il C non lo studi con l'ide perchè ti vizia, senza IDE commetti tantissimi errori ...
Appunto. Se uno sta imparando i concetti di un linguaggio perche' mai deve perdere tempo con errori di battitura? Dammi per favore un altro motivo, che sia valido, perche' non si debba iniziare con un IDE, che con la programmazione non ha nulla a che fare. Sarebbe come dire "non usare un sistema operativo esistente perche' ti vizia bensi' scriviti il tuo file system ..." Dai siamo seri. Nessuno con un minimo di sale in zucca si mette a scrivere un sistema operativo o un database (a meno di non farlo di mestriere). Il IDE e' come il sistema operativo, ti permette di focalizzare il nostro sudio (programmare) senza dovere fermarsi nei dettagli.
Ripeto: stiamo parlando di ragazzi che non sanno la differenza tra puntatore e vettore. Come li possa aiutare NON usare un IDE me lo dite voi.
 

Hobet

Utente Attivo
609
222
CPU
i5 6600k
Dissipatore
AIO H100
Scheda Madre
ASUS z170 Deluxe
HDD
1 WD Blue 1 TB; evo 850 500gb
RAM
Vengeance 4x4
GPU
GTX 1070ti MSI
Audio
Nope
Monitor
MG278Q
Case
750D Corsair
Net
Fastweb 200/30
OS
PucyBuntu
Appunto. Se uno sta imparando i concetti di un linguaggio perche' mai deve perdere tempo con errori di battitura? Dammi per favore un altro motivo, che sia valido, perche' non si debba iniziare con un IDE, che con la programmazione non ha nulla a che fare. Sarebbe come dire "non usare un sistema operativo esistente perche' ti vizia bensi' scriviti il tuo file system ..." Dai siamo seri. Nessuno con un minimo di sale in zucca si mette a scrivere un sistema operativo o un database (a meno di non farlo di mestriere). Il IDE e' come il sistema operativo, ti permette di focalizzare il nostro sudio (programmare) senza dovere fermarsi nei dettagli.
Ripeto: stiamo parlando di ragazzi che non sanno la differenza tra puntatore e vettore. Come li possa aiutare NON usare un IDE me lo dite voi.

Io non capisco te lo giuro, dimmi un IDE in cosa aiuterebbe uno studente voglio proprio sapere, non dirmi intellisense o code checking che tutti gli editor la tengono come opzione o plugin. Un ide fa perdere tempo, uno studente che vuole fare un programmino stupido per sortare un array giustamente secondo te lo butti su visual studio e gli spari in faccia tremila opzioni, invece di un editor dove deve semplicemente scrivere un main e una funzione che sorta, e poi lo stesso studente si deve ricordare che visual studio accetta un solo main a progetto, dunque lo studente per ogni programmino stupido in cui deve fare due printf deve creare tremila progetti, per non parlare del ricordarsi di mettere come modalità di compilazione C e non C++ e poi lo stesso studente durante l'esame non capirà perchè non compila ci arriverà dopo realizzando di aver usato il compilatore di windows e non GCC visto che all'uni usano GCC un tipico esempio fflush su windows cancella lo stdin su linux non fa niente è definito diversamente, durante l'esame lo usi per cancellare l'stdin poi fai gcc e ti accorgi che non funziona tutto questo perchè hai usato visual studio e che fflush su windows è definito diversamente da linux ed effettivamente succede ogni anno agli esami di fondamenti di informatica agli splendidi che usano visual studio, per fare stupidi programmi che sortano un array di stringhe, io l ho usato visual studio e lo uso, ma lo usi per un progetto grande non per programmi che dopo una serata te ne dimentici. A mio parere un si focalizza sullo studio di più cosi, poi fa gcc nome file ed è fatto letteralmente 2 secondi, però te sei di coccio e non capisci. :suicidio:
 
Ultima modifica:
  • Mi piace
Reazioni: Utente 359422

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili