Tag Archives: programmering

Debugging i eclipse

English summary: This article is in Norwegian and describes debugging of Java code in the Eclipse Java IDE.

Debugging (“avlusing”) I eclipse, betyr å stoppe et program som kjører og se hvilke verdier variabler har. Å debugge Hello.java som det var, er ikke spesielt interessant. Det er f.eks. ingen variabler å kikke på utenom “args”, som her ikke inneholder noe interessant.

Om du endrer programmet til noe sånt, blir det litt mer interessant (du kan bruke Ctrl-SPC for å ekspandere og skrive ting, eller du kan bare lime inn koden som den står i eksempelet):

package no.example.hello;

public class Hello {

        /**
         * @param args
         */
        public static void main(String[] args) {
                int numberOfTimesToPrintMessage = args.length;
                for (int i=0; i<numberOfTimesToPrintMessage; i++) {
                    System.out.println("Hello world!");
                }
        }
}

Linja med “for” betyr at programmet skal gå i ei løkke et visst antall ganger og gjøre det som står inne i løkka hver av gangene.

Om du nå prøver å kjøre programmet, så ser du at ingenting kommer ut i Console-vinduet. Det var merkelig! På tide å debugge!

Høyreklikk i margen på linja

System.out.println("Hello world!");

og velg “Toggle breakpoint”.

Velg så fra toppmenyen

Run -> Debug As -> Java Application

Programmet vil kjøre som før, og ingenting vil fortsatt skrives ut.

Sett et brekkpunkt i linja med

for (int i=0; i<numberOfTimesToPrintMessages; i++) {

og trykk på F11 for å debugge på nytt.

Du vil få opp en dialog, som heter “Confirm Perspective Switch”. Bare velg “Remember my decision”, klikk på “Yes”-knappen og fortsett.

Vinduene i eclipse vil rearrangere seg, men kildekoden til Hello.java vil fortsatt være synlig. I et vindu som heter “Variables” så vil du se at “numberOfTimesToPrintMessages” har verdien “0”. Aha!

Koden

for (int i=0; i<numberOfTimesToPrintMessages; i++) {

betyr: la variabelen i ha verdiene fra 0 og til numberOfTimesToPrintMessages – 1, og for hver ny verdi av i, utfør koden mellom “{” og “}”.

Variabelen numberOfTimesToPrintMessages er definert sånn:

int numberOfTimesToPrintMessage = args.length;

dvs. antall kommandolinjeargument som er gitt til programmet.

Trykk “F8” for å la programmet fortsette. Programmet vil avslutte uten at noe blir skrevet ut.

For å komme tilbake til oppsettet du bruke for å lage Hello.java, velg fra menyen:

Window -> Openm Perspective -> Java

I vinduet “Package Explorer”, høyreklikk på “Hello.java” og velg “Properties”.

Velg “Run/Debug Settings”, velg “Hello” og klikk på “Edit…”.

I “Edit Configuration”-dialogen, velg “Arguments”-tabben, og i “Program Arguments”, legg inn:

first second third fourth

Kjør så programmet igjen

Run -> Run

og observer at Console nå får fire utgaver av hello world.

Noen øvelser: debug og se hvordan variablene endrer seg. Du kan bruke F8 for å la programmet kjøre til neste brekkpunkt.

En ting du kan gjøre er å bruke verdiene fra argumentene i utskriftene og så endre argumentene i Properties og se hvordan det endrer kjøringen av programmet.

Hello world! i eclipse

English summary: This article is in Norwegian and describes first startup of the eclipse Java IDE, and writing and running an “Hello World” application inside eclipse.

Når du starter eclipse, så er det første som skjer at det kommer opp en dialog som sier “Select a workspace”. Det som foreslås, er hos meg:

C:userssteinarbworkspace

(istedenfor “steinarb” så vil du se en katalog for ditt eget brukernavn)

Bytt dette ut med:

C:userssteinarbworkspaceshello

Et “workspace” i eclipse, er en samling av prosjekter. Om du har gjort deg litt kjent med Visual Studio, så tilsvarer et “workspace” i eclipse, det som heter “solution” i VS.

Du kan godt ha mange urelaterte prosjekter i en solution, men jeg synes det fort blir rotete. Så det man gjør med endringen, er å lage et workspace som heter “hello”, som skal inneholde et prosjekt som heter “hello”.

Så velger du fra menyen

File -> Java Project

I “Project name:” skriver du

hello

og klikk på “Finish”-knappen.

Så kan du enten lukke “Welcome”-vinduet, eller klikke på teksten “Workbench”.

Høyreklikk så på “hello” i “Package Explorer” (til venstre i Eclipse) og velg “Package”. I Name-ruta, gi teksten:

no.example.hello

Teksten her kan være hva som helst, men det er vanlig å bruke internett-domenenavn i reversert i starten av teksten. Dette er pakkenavnet som gjør klassen din helt unik (mange kan lage en klasse som heter “Hello”, men forhåpentligvis er det bare en “no.example.hello.Hello”).

Høyreklikk så på teksten “no.example.hello”, og velg

New -> Class

I “Name:” skriver du:

Hello

Klikk også i sjekkboksen ved teksten “public static void main(String[] args”, og klikk så på “Finish”-knappen.

Det da vil komme et vindu som heter “Hello.java”, med følgende innhold:

package no.example.hello;

public class Hello {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub

        }

}

Merk så linja med TODO-kommentaren, og skriv bokstaven S og trykk Ctrl-SPC (hold ned Ctrl-tasten mens du trykker og slipper space-bar). Da kommer det en drop-down-meny med “System – java.lang” som førstevalg, og allerede valgt. Trykk på RET.

Skriv så punktum, og bokstaven “o”. Drop-down-menyen kommer opp på “.”, og på “o”, så er “out: PrintStream – System” valgt. Trykk RET igjen.

Skriv “.” (uten anførselstegn) igjen. Drop-down-menyen dukker opp igjen. Skriv teksten “printl” (uten anførselstegn). I drop-down-menyen vil da “println():void PrintStream” være valgt. Trykk nedoverpil for å velge valg nummber to, dvs. “print(boolean arg0): void – PrintStream” og trykk RET igjen.

Teksten “arg0” vil være valgt. Skriv “Hello world!n” (denne gangen med anførselstegnene). Om du lurer på hvorfor man ikke skulle velge “print(string arg0)” så er svaret at man ikke trenger det. Det er nok å få på plass ett argument og så gi det en verdi av riktig type.

Trykk på “End”-tasten, for å gå til slutten av linja og skriv semikolon, dvs. “;” (uten anførselstegn).

Trykk Ctrl-S, for å lagre.

Merk: du kan godt skrive teksten

System.out.print("Hello world!n");

fullt ut. Men å bruke Ctrl-SPC og velge fra drop-down-menyen går raskere og vil eliminere skrivefeil.

Programmet ditt skal nå se sånn ut:

package no.example.hello;

public class Hello {

        /**
         * @param args
         */
        public static void main(String[] args) {
                System.out.print("Hello world!n");
        }

}

Nå har du lagd ditt første program og det er på tide å kjøre det. Fra menyen på toppen av Eclipse-vinduet, velg:

Run -> Run As -> Java Application

Nede i Eclipse vil det poppe opp et vindu som heter Console og teksten

Hello world!

vil vises.

En øvelse blir å bytte ut teksten og kjøre på nytt. Forslag til morsomme tekster, er “Hei verden!” og “God jul!”.

Tips: Ctrl-F11 er en snarveg for å kjøre sist kjørte prosjekt om igjen.