JBuilder (versjon 9)
JBuilder er et såkalt IDE - Integrated Development Enviroment -
hvilket vil si at det er fullstendig overkill bare for å debugge
en enkelt java-fil, slik vi skal i dette kurset. Det er beregnet
til å administrere prosjekter og har masse avansert funksjoner vi
ikke har bruk for. Bare se bort fra dem. Dessverre er vinduet til
JBuilder litt fullt. For de som foretrekker en enklere løsning,
foreslås jdb, som er kommandolinje-basert.
Registrering
Bla-bla-bla:
JBuilder Personal har blitt installert av drift som en "vennetjeneste" til
studentene. Man må selv skaffe seg en lisens fra Borland.
Dette fordi NTNU ikke har kjøpt lisenser til JBuilder.
Heldigvis er lisensene til JBuilder Personal nesten gratis,
det eneste som kreves er at du registrerer kontaktinformasjon om deg
selv, slik at Borland kan spørre deg hvor fornøyd du er med
JBuilder Personal. Du blir en slags beta-tester altså, bare ikke
på en beta-versjon, men på en versjon som ikke har like mange
funksjoner som JBuilder Enterprise.
Det skulle likevel være nok funksjoner å ta av, selv om noen småting
er litt irriterende. For eksempel at TAB-størrelsen er 2 og ikke kan
endres.
Det essensielle:
- Gå til
http://www.borland.com/products/downloads/download_jbuilder.html
og klikk på "Personal" under "Keys Only (If you have a CD)" for versjonen
som er installert på datasalene (versjon 9 høsten 2003).
- Du kommer nå til et innloggings-skjema. Klikk på "New User".
(Vel, hvis du har registrert deg før, kan du jo bare logge inn...)
- Registrer deg (husk å ta vekk kryssene for å bli sendt diverse
reklame og informasjon dersom du ikke ønsker dette)
- Verifiser e-post-adressen din (dit lisensen blir sendt)
- Vent litt
- Sjekk e-posten og lagre vedlegget (lisensen) et eller annet sted
- Start JBuilder og fortell hvor du lagret lisensen når du blir spurt
Bruke JBuilder (bruke/opprette filer)
Første gang JBuilder startes opp, tilbys du en tutorial.
Denne tar ca. 10 minutter å lese dersom du hopper over alt
som er irrelevant. Hvis du ikke er vant med å bruke programmer
som JBuilder anbefales du å lese denne!
For å kunne kompilere og kjøre (og debugge) programmer,
må de ligge i et prosjekt. Jeg anbefaler å opprette et
prosjekt der du legger inn alle algdat-øvingene.
Da har du enkel tilgang på tidligere øvinger, om du vil
se på noe. For å opprette dette prosjektet:
- File -> New Project
- Name: algdat
- Type: jpx
- Directory: m:\skole (katalogen algdat blir evt. opprettet her,
og prosjektfilene lagres under denne.
Under algdat opprettes katalogene
classes, doc og src, som inneholder hhv.
kompilerte filer, javadoc og kildekode)
- Template: (Default project)
- Add project to active project group: Må være på i Personal
- Generate project notes files: Av
- Next >
- Output path: Du kan fjerne classes om du ønsker å få
kompilerte filer under m:\skole\algdat
- Backup path: Best å la være
- Working directory: Best å la være
- Arkfanen source: Klikk og endre path som inneholder src
dersom du ønsker å lagre kildefilene under m:\skole\algdat
- Next >
- Finish
Når du har et prosjekt kan du gjøre ett av to:
Legge til eksisterende filer
(dersom du har lastet ned rammeverket):
- Last ned rammeverket, HallgrimX.java og evt. andre filer, til
m:\skole\algdat\src\
- Høyreklikk på algdat.jpx
- Klikk på "Add Files / Packages / Classes ..."
Opprette nye filer
(dersom du kopierer rammeverket fra nettleseren)
- Høyreklikk på algdat.jpx eller <Project Source>
- Klikk på New -> Class...
- Package: (tom)
- Class name: HallgrimX
- Base class: java.lang.Object
- Options:
- Public: På
- Generate main method: Av (På om du lager en test-klasse)
- Generate header comments: Av
- Generate default constructor: Av
- Override superclass constructors: (ingen betydning)
- Override abstract methods: (ingen betydning)
Kjøre program
For å kjøre Hallgrim-programmene riktig, må navnet på innputt-filen
gis med som et parameter. Gjør slik:
- Run -> Configurations...
- New... / Edit...
- Name: Dummy
- Build target: Make
- Run:
- Type: Application
- Main class: (velg HallgrimX)
- VM paramaters: (tom)
- Application parameters: m:\skole\algdat\input.txt
- Debug: (la være)
- Optimize: (la være)
- OK
- Kryss av i Default-kolonnen
- OK
Når du har konfigurert main-klassen og parameterne riktig,
kan du kompilere og kjøre programmet ved å klikke på
"Play"-symbolet i verktøylinja, velge Run -> Run Project
eller trykke F9. Det er ikke nødvendig å lagre filene
først.
Debugging: Finne kompileringsfeil
Med mindre dette har blitt skrudd av, viser JBuilder en rekke
kompileringsfeil mens du skriver. Dette markeres med røde streker
under feilene og til venstre står det en liste over hvilke feil
som for tiden er funnet. Det burde derfor være mulig å rette
de fleste kompileringsfeil uten å kompilere.
Når du kjører prosjektet (F9), kompileres det. Dersom det er noen
kompileringsfeil vises disse i ei liste nederst. Klikk på en feil
for å åpne den fila feilen er i på den linja feilen er oppdaget.
Debugging: Kjøring av programmet i debug-modus
Dette er grunnen til å bruke JBuilder. Alt som står over dette
avsnittet er stort sett bare ull som er nødvendig for
å kunne utføre det vi skal snakke om etterpå og nå:
- Breakpoints (stopp-punkter)
- Step Over execution (stegvis utføring, metodekall behandles som ett steg)
- Step Into execution (stegvis utføring, metodekall fører til stegvis utføring av metoden som kalles)
- Run to Cursor (kjør til markørens linje treffes på)
Det er tre måter å starte programmet i debug-modus på:
- Debug Project (fra verktøylinja eller
Run -> Debug Project eller Shift+F9).
Utførelsen vil stoppe når den kommer til et stopp-punkt,
så dette er bare brukelig dersom du har satt noen stopp-punkter
som utførelsen kommer til.
- Step Over (Run -> Step Over eller F8)
- Step Into (Run -> Step Into eller F7)
De to siste kan også brukes for å fortsette utførelsen etter at den
har stoppet. I tillegg kan Resume Program
(fra verktøylinja i kjørevinduet nederst eller Run -> Resum Program
eller F9) brukes for å fortsette programmet. Da til neste stopp-punkt
påtreffes.
Breakpoints (stopp-punkter):
Det er to måter å sette et stopp-punkt på. Den enkleste (og mest primitive)
er å venstreklikke i margen til høyre for linjenummeret på den linja der
du vil sette ut stopp-punkt. Når utførelsen kommer til denne linja,
stoppes programmet og du kan inspisere variablene og metodekallene.
Merk at det er meget mulig at utførelsen ikke kommer til denne linja,
dersom du for eksempel setter stopp-punktet inne i en
if og betingelsen aldri blir oppfylt. Setter du derimot
stopp-punktet på selve linja med if-betingelsen
vil utførelsen stoppe der (forutsatt at den kommer dit da...
Den andre måten er å gå på Run -> Add Breakpoint -> Add Line Breakpoint...
og velge hvilken klasse og linje du vil ha stopp-punktet på. Da kan du
i tillegg sette en betingelse og en teller-trigger. Dette kan også gjøres
ved første å sette et stopp-punkt på den vanlige måten og deretter
høyreklikke på linja og velge Breakpoint Properties...
En betingelse kan f.eks. være 'n==100'. Det kan jo være hendig å ha inne
i en løkke dersom du iterasjonsvariablen er n og du mistenker at det
er noe problemer når den er 100. En teller-trigger fører til at
utførelsen bare stoppes på stopp-punktet når utførelsen har kommet til
stopp-punktet så mange ganger som angitt. Dette kan være hendig om du
ikke har noen iterasjonsvariabel (f.eks. ved rekursive kall).
Dersom du bruker teller-triggeren i kombinasjon med en betingelse,
telles bare de gangene betingelsen er oppfylt.
Step Over execution:
Utfør neste linje. Metodekall behandles som en hvilken som helst
annen linje, og fører bare til et steg.
Step Into execution:
Utfør neste linje. Metodekall fører til at neste steg er den første
linje i metoden som kalles. Linja med metodekallet blir utført som
ett steg når metoden som ble kalt returnerer.
Run to Cursor:
Fortsetter utførelsen til linja med markøren (der du skriver)
treffes på. Dette ligner på å sette et stopp-punkt på den samme
linja, men er raskere å endre på. Du slipper unna med et klikk
for å flytte markøren, mens du må ha to klikk for først å fjerne
et gammelt stopp-punkt og så sette et nytt. Dersom utførelsen
ikke treffer på linja til markøren, fortsetter den til programmet
er ferdig. Dersom et stopp-punkt treffes på før linja til markøren,
vil utførelsen bli stoppet der som ellers.
Debugging: Observere programmet i debug-modus
Her er det tre viktige punkter i kjørevinduet du får nederst på
skjermen når du starter programmet i debug-modus. I tillegg er det
mulighet for å skrive uttrykk direkte.
- Console output, input and errors
- Threads, call stacks and data
- Data watches
Console output, input and errors:
Dette er tekstboksen med kommandoen som brukes for å starte programmet
og all output/input som gjøres iht. slik programmet er skrevet.
Altså det du ser når du kjører programmet fra kommandolinja.
Dette er den samme tekstboksen som du ser nederst når du
kjører programmet i vanlig modus, men nå har du mulighet til å velge
å se andre ting i kjørevinduet nederst.
Threads, call stacks and data:
Denne tre-lista er sannsynligvis den viktigste til hjelp i den
debuggingen vi har bruk for. Under 'system' -> 'main' -> 'main'
er det liste opp de metodene som har blitt kalt. Den som ble
kalt sist er øverst. Om du klikker på plussen foran
en metode, får du opp variablene i metoden og verdiene de er satt
til. For arrayer (lister/tabeller) kan du trykker på pluss ytterligere
en gang og få opp verdiene til alle elementene.
Data watches:
Her ser du de nåværende verdiene til de uttrykkene du har angitt.
Vil du for eksempel vite hva i+j til enhver tid er, går du på
Run -> Add Watch og legger inn 'i+j' på Expression. Et heller
hendig alternativ til å slå opp på metoden du er i akkurat nå
for å finne verdiene og så beregne formelen selv.
Hvor du er når du legger inn en watch er ubetydelig.
Verdien beregnes ut i fra verdien til de variablene som er tilgjengelige
hvorenn utførelsen måtte være stoppet. Om de er utilgjengelige opplyses
det bare om dette.
Uttrykk på direkten:
Som et alternativ til alltid å ha en "data watch" kan du evaluere verdien
av et uttrykk når du kommer på behovet for det. Gå på
Run -> Evaluate / Modify... Her kan du skrive inn et uttrykk,
klikke på Evaluate og få vite verdien av det. Muligheten for å endre
verdien av en variabel er ikke tilgjengelig i JBuilder Personal,
men selv om dette er kjekt å eksperimentere med, er det ikke noe vi
trenger så veldig mye.
|