Övningar för att komma igång.


Bekanta dig med Unix och C++

Mer info finns i Datorhandboken. Appendixarna kan vara bra att ha till hands första gångerna du jobbar med Unix och emacs. Se även Unixs man-sidor.

Tips: Ett bra program för att läsa man-sidor är TkMan. Det startas genom att du skriver /stud/docs/kurs/aod-tf/tkman& <RETUR> i ditt terminalfönster.


Bekanta dig med Unix

Logga in

Skriv (ditt user name)<RETUR> (ditt password)<RETUR>.

Ändra ditt password!

Någon gång under första inloggningstillfället skall du ändra ditt lösenord. Detta gör du med hjälp av unix-kommandot passwd.

Ett password skall:

Tips: För att maskinen som administrerar lösenorden skall hinna med bör inte alla försöka precis samtidigt. Ett tips är att du inte försöker ändra det första du gör, utan börjar jobba med det du ska, och byter lösenord i samband med att du tar en paus.

Några enkla saker att börja med:

Prova WWW

Starta Netsacpe. (Detta görs genom att skriva netscape& i ditt terminalfönster, eller genom att trycka på knappen med ett Netscape emblem.)

När ditt netscapefönster kommer upp bör du komma till en sida med vidarepekare (visade som understrykna ord) till diverse ställen. Du kan följa en sådan pekare genom att klicka på den.

Du kan även öppna en viss sida direkt. Detta görs genom att du trycker på öppna-knappen på din netscape, och skriver sidans adress i det lilla fönstret som kommer upp. Du kan t.ex. testa:

Du kan även söka efter sidor i något av de olika sidregister som finns. Om du väljer Internet Search i Directory menyn på din Netscape, så får du fram en lista där du kan välja bland mest använda sidregistren. Ett tips är att du väljer sidregistret Alta Vista. Det är ett av de största och snabbaste registren och det är även väldigt lätt att använda. Leta t.ex. upp en bra nattklubb i Paris.

Tips: Vissa av dokumenten kan vara på ett format som kräver ändringar i dina init-filer för Netscape, för att kunna läsas.

Skapa en fil (om du inte redan har den) som heter .mailcap i ditt hembibliotek. I denna fil lägger du sedan följande rad:

application/postscript; ghostview %s;

Prova Unix-kommandon

Använd man: Pröva att kopiera och ta bort filer. Observera att filer som tagits bort är borta för alltid och för evigt.

Nedan följer en lista av vanliga Unix kommandon. Se till att du lär dig använda dessa; Läs om dem i Datorhandboken, läs deras man-sidor och prova dem tills du förstår hur de fungerar. Om du gör detta ordentligt kommer arbetet med labbar och inlämningsuppgifter att flyta mycket lättare.

Titta dig omkring! Pröva dig fram och var inte rädd för att göra misstag. Det är ganska svårt att åstadkomma skada, och det ska vara omöjligt att skada andra, så pröva på bara! Var bara försiktig med rm så går det nog bra.


Första programmeringsförsöket

Kopiera labfilerna

Gör ett eget subdirectory i xterm, med mkdir.

Kopiera filerna i /stud/docs/kurs/aod-tf/ till ditt nya directory, med hjälp av cp.

Gör cd till ditt nya directory, och lista filerna i det.
(cd <newdir>, ls)

Ex:
$mkdir mydir
$cd mydir
$cp /stud/docs/kurs/aod-tf/prog1.cc .
$cp /stud/docs/kurs/aod-tf/prog2.cc .
$cp /stud/docs/kurs/aod-tf/prog3.cc .
$ls
prog1.cc
prog2.cc
prog3.cc
$
'$' representerar Unixprompten, fetstil det som användaren skriver.

Skriva och spara en fil

Gör ditt emacsfönster stort, låt det täcka hela den vänstra halvan av skärmen. ( "Ta tag" i nedre högra hörnet med vänster musknapp intryckt)

Tips: Innan du fortsätter vidare, läs igenom vad som står om emacs i Datorhandboken, eller kör emacs tutorial. ( Emacs tutorial startas med C-h t i emacs. D.v.s. genom att du trycker på h medan du håller Control-tangenten nedtryckt, och därefter släpper Control och trycker på t. )

C-x C-f tar fram en fil i emacs. C-x C-s sparar filen. Om du inte redan namngivit filen du sparar så kommer emacs att fråga efter ett namn att spara under. C-x C-w sparar en fil under nytt namn.

Använd piltangenter för att flytta runt, eller C-f, C-b, C-n, C-p.

C-l scrollar skärmen så att det du håller på med hamnar mitt på skärmen. C-g är ett bra nödstopp. C-l och C-g är i princip aldrig "farliga".

C-x C-c avslutar emacs.

Tips: Om du skriver M-x line-number-mode i din emacs, så börjar den att visa vilken rad markören befinner sig på. Detta kan vara mycket användbart, t.ex. vid debugging.

Tips: Om emacs visar åäö som \345\344\346, skriv M-x standard-display-european i din emacs så visar den åäö på rätt sätt.

Kompilera ett program

Kompilera ett program från xterm-fönstret på skärmen genom att skriva:

g++ -o <prgfil> -ggdb <källkod.cc>

  1. <prgfil> blir namnet på din körbara fil. Kan naturligtvis bytas ut mot vad du vill, exempelvis runnable.
  2. <källkod.cc> är namnet på den fil du vill kompilera, exempelvis myprog.cc.
Om du vill kompilera t ex filen myprog.cc, och vill att resultatet (den exekverbara filen) skall heta runnable, så skriver du alltså g++ -o runnable -ggdb myprog.cc

-ggdb är till för att producera information som debuggern använder sig av - utan denna information kan du inte köra programmet i debuggern.

Kör programmet

Skriv namnet på din kompilerade fil, dvs det namn du använt istället för prgfil när du kompilerade. Om du kallat den körbara filen test kan du få problem: ett program för hårdvarutest kommer att köras i stället. Lösningen är helt enkelt att inte kalla sina program test.

Om du skriver namnet på din körbara fil och får svaret runnable: Command not found så kan det finnas flera orsaker.

Ändra och debugga i programmet

Kopiera nu /stud/docs/kurs/aod-tf/prog2.cc. Som du snabbt ser, är det felaktigt. Försök lista ut vad som är fel, och rätta felen.

Tips: Det är ofta en god hjälp att kompilera ett program även om det är felaktigt, eftersom kompilatorn ger felutskrifter och varningar med radhänvisningar.

Rätta felen och spara den rättade filen. Kompilera. Gör om tills programmet går igenom kompilatorn, och exekverar tillfredställande.

Kör debuggern

Filen /stud/docs/kurs/aod-tf/prog3.cc innehåller mer subtila fel. Nu kan debuggern komma till nytta.

Kopiera filen, kompilera.

För att felsöka programmet ska du köra den debugger som är avsedd för vår C++-kompilator. Det lättaste är att använda ddd. ddd startas genom att du i ditt terminalfönster skriver ddd <programnamn>&. ( ddd är i själva verket inte en dedugger, utan ett grafiskt gränssnitt till debuggern gdb. Om du vill kan du köra gdb direkt i ditt terminalfönster, det blir dock inte lika lättarbetat som om du kör ddd)

Om du använder ddd kommer du att få upp två stycken fönster. Ett kommandofönster, där du kan skriva kommandon direkt till gdb, och ett fönster som visar källkoden till ditt program. Inne i ddd / gdb ger kommandot help ... just det, hjälp. Titta sedan i den kategori kommandon du är intresserad av. help running listar till exempel kommandon med anknytning till hur man kör program i gdb.

Kategorin breakpoints innehåller kommandon för att vid vissa tidpunkter stoppa exekveringen, exempelvis för att inspektera variabler.

break main skapar exempelvis en breakpoint vid funktionen main, så att exekveringen avbryts när main nås. breakpoints kan också sättas på radnummer.

Om du använder ddd är det lättast att skapa breakpoints genom att placera markören på den rad i koden du vill ha en breakpoint (ställ markören först på den raden, och tryck på vänster musknapp), och sedan trycka på knappen Break(), i knappraden i källkodsfönstret.

cont fortsätter exekvering.

step exekverar nästa rad. Om någon funktion anropas på raden så stiger step ned i den.

next exekverar nästa rad, utan att stiga ner i funktioner.

I kategorin data finns användbara kommandon för att inspektera data, t. ex. print och display. Print i skriver ut vad variabeln i har för värde för tillfället, och display ser till att variabelns värde visas efter varje steg i programmet.

Använd debuggerkommandona för att undersöka variablers värde, och stega dig fram genom exekveringen. Snart har du hittat felet, och kan åtgärda det.

Exempel:

  1. Kompilera prog3.cc
  2. Starta debuggern (t.ex. med ddd prog3&)
  3. Sätt en brytpunkt på rad 20. ( Klicka på rad 20 i källkodsfönstret, och tryck sedan på knappen med texten Break()) Du bör nu få en markering (en liten stoppskylt) på rad 20.
  4. Starta programmet. (Tryck på knappen med texten Run.)
  5. Programmet kommer nu att stanna och vänta på att du matar in ett heltal. Gå till kommandofönstret och skriv in ett tal, t.ex. 1, följt av <retur>
  6. Programmet kör vidare, och stannar vid din brytpunkt. Detta kommer att markeras med en pilmarkering bredvid stoppskylten på rad 20.
  7. Säg åt debuggern att visa innehållet i varabeln i, efter varje steg. (Detta gör du genom att markera i med musen, och trycka på knappen märkt Display()) Du får då upp ett fönster med titeln "DDD: Data Window", och i detta fönster finns en liten ruta som visar vilken variabel man tittar på, och vad den har för värde just nu.
  8. Stega programmet några steg, genom att trycka på knappen märkt Step. Nu kommer pilen, som markerar var i programmet man befinner sig, att flyttas i programfönstret, och värdet på i att ändras i datafönstret.
  9. Testa vidare på egen hand.

Att skapa en loggfil

För att få en loggfil, som visar programexekveringen, ska du köra programmet i emacs. Gör så här: Ställ markören i emacsen, skriv M-x shell. Kör programmet som vanligt, och spara körningen med C-x C-w <loggfil>, vilket sparar hela sessionen i en fil med namnet loggfil. Filen kan sedan editeras som vanligt. Kom ihåg att skriva exit i emacs.

Frivilliga uppgifter


Anders Berglund
Last modified: Fri May 24 17:42:28 MET DST 1996