cp -r ~wmaster/tdb/kurser/TDBB40/ht98/intro/bugg ~/bugg cd !$
Ovanstånde kommandon kopierar hela katalogen
~wmaster/tdb/kurser/TDBB40/ht98/intro/bugg
med innehåll till
underkatalogen bugg
i din hemkatalog.
Programmet tar två strängar (s1 och s2, hårdkodade i källkoden) och talar om hur många av
tecknen i s1 som inte finns med i s2. Exempel:
"aaah" består till 25% av tecken som inte finns med i "C är snabbare än ML"
"aaHH" består till 50% av tecken som inte finns med i "ML är snabbare än VIC-20 BASIC"
make; ./bugg
Ser inte bra ut, eller hur? Generellt sett kan man säga att om det står "core dumped" när du försöker köra ditt program så har du problem. Stora problem.
Apropå "stor" kan core-filen bli rätt omfattande på vissa system. Kom ihåg att ta bort den.
ddd &
bugg
i debuggern genom att
först välja Open program under menyn File.
Markera sedan bugg
under Files i den dialog
du fått upp och klicka därefter på Open.
Källkoden till bugg
visas nu i det mittersta
av debuggerns fönster. Studera koden en stund och kompilera
den sedan genom att välja Make under menyn File.
Som du ser gick något snett vid exekveringen. För att ta reda på vad som blev fel kan du köra programmet rad för rad.
printf()
och andra
biblioteksfunktioner.totChar
och sedan väljer
Display kan du inspektera
variabeln. Experimentera lite!
Försök köra programmet igen (Run).
Fungerar det nu? Du kan avgöra om det fungerar genom att studera
vad som händer i det nedersta av debuggerns fönster.
Om programmet fungerar kommer du att få ett meddelande som talar om
hur många procent av tecknen i s1 som är unika. (Rätt svar
är 38 procent.)
Dessutom kommer debuggern att skriva ut texten Program exited
normally.
~/unixintro
som du skapade i
Moment 1:
cd ~/unixintro
En av de filer du kopierade dit heter
warnings.c
och innehåller en del fel. Pröva
att kompilera programmet med hjälp av kompilatorn gcc
på
följande två olika sätt:
gcc -g warnings.c -o warnings
gcc -g -Wall warnings.c -o warnings
Blev det någon skillnad? Läs man-sidan för
gcc
och ta reda på vad flaggan
-Wall
betyder.
[an error occurred while processing this directive]