Debugging. Tore Berg Hansen, TISIP
|
|
- Brita Løkken
- 9 år siden
- Visninger:
Transkript
1 Debugging Tore Berg Hansen, TISIP
2 Innhold Innledning... 1 Å kompilere og bygge et program for debugging... 1 Når debugger er i gang... 2 Symbolene i verktøylinjen... 3 Start på nytt... 3 Stopp debugging... 3 Avbryt... 3 Step over... 3 Step ut av... 3 Step inn i... 4 Vis neste setning... 4 QuickWatch... 4 Debugg vinduer... 4 Watch... 4 Variabler... 5 Registers... 5 Memory... 6 Call stack... 6 Dissassembly... 6 Andre menyvalg som berører debugger... 7 Et lite eksempel... 9 i
3 Innledning Debugging er prosessen med å lokalisere hvor i koden årsaken til at et program eventuelt feiler ligger. Deretter kan feil rettes. Debugging gjøres på programmer som ikke feiler under kompilering og lenking. Det vil si at programmer kjører, men leverer ikke forventede resultater. En debugger er et verktøy som kan hjelpe til med å lokalisere feilkildene. Med en debugger kan man kjøre et program linje for linje sette stopp-punkter (breakpoints) for så å kjøre programmet frem til disse overvåke innholdet i variabler sette nye verdier i varibler evaluere uttrykk endre kode For at man skal kunne gjøre dette i et program blir kode for debugging lagt til programmet. Dette gjør at programmer med debugger ikke vil være optimalisert verken for plass eller hastighet. Når programmer virker uten å feile vil man kompilere og bygge en frislippversjon som er optimalisert etter ønskede kriterier som kan være f.eks hastighet. Vi skal i dette notat se nærmere på debuggeren i Visual Studio. Den har de fleste muligheter vi kan ønska av en debugger. Å kompilere og bygge et program for debugging Visual Studio gir mulighet for å kompilere å bygge et program i to versjoner, enten for frislipp eller for debugging. Det bestemmer man ved å gå inn på menyvalget Build og deretter klikke på Set Active Configuration Da kommer denne dialogen opp som er selvforklarende. 1
4 Etter at konfigurasjon er valgt bruker man de samme kommandoer til å kompilere, bygge og kjøre. Skal man derimot debugge går man inn i Build menyen og klikker deretter på Start Debug. Da får man flere alternativer: Go programmet vil kjøre til slutt hvis det ikke er noen stopp-punkter. Step Into går til første linje i programmet og stopper. Run to Cursor kjører til der cursor står i kildekoden. Attach to Process - kobler debugger til en prosess som kjører. Prosessen kan så avbrytes og debugges. Det finnes også to andre muligheter. Man kan bruke spesielle funksjonstaster eller klikke på symboler på verktøylinjen. Funksjonstastene er F5 for Go, F11 for Step Into og CTRL-F10 for Run to Cursor. Symbolene i verktøylinjen er som vist på denne figuren: Bygg Stopp bygg Go Kompiler Kjør program Sett/fjern stopp-punkt Når debugger er i gang Når debugger er i gang vil menyvalget Debug overta for Build. Det kommer også opp en flytende verktøylinje for debugger som er et alternativ til menyvalget Debug. Verktøylinjen er vist i neste figur. 2
5 Bruk kode endring Avbryt Stopp debugging Vis neste setning Step inn i Step over Step ut av Start på nytt Run to Cursor QuickWatch Watch Registre Stakk Dissassembly Variabler Minne Åpning/lukking av vinduer Den flytende verktøylinjen kan dokkes. Vi skal se nærmere på hva som skjuler seg bak symbolene og dermed hva vi kan gjøre i debuggeren. Symbolene i verktøylinjen Her skal vi se på symbolene som ikke er behandlet tidligere. Start på nytt Begynner igjen på første linje i programmet hvor det stopper. Programmer lastes på nytt sli at alle verdier blir satt på nytt. Stopp-punkter beholdes. Stopp debugging Avslutter debugging. Programmet er klart til å starte på nytt. Avbryt Stopper programmet der det er i øyeblikket. Kan være nyttig hvis programmer kjører lenge. Step over Kjører en og en instruksjon i programmet. Når det treffes på en funksjon, blir den utført. Men man går ikke trinn for trinn i funksjonen. Step ut av Kjører ut av en funksjon. Stopper på instruksjonen rett etter kallet til funksjonen. Denne kan brukes for å hoppe kjapt ut av en funksjon etter å ha påvist at en feil ikke er inne i funksjonen. 3
6 Step inn i Går trinn for trinn gjennom programmet. Går også inn i en funksjon når den påtreffes og fortsetter trinn for trinn inne i funksjonen. Vis neste setning Viser neste setning i programkoden. Hvis kildekode ikke er tilgjengelig vises setningen i et dissassembly vindu. QuickWatch Viser QuickWatch vinduet hvor man kan legge inn utrykk. Dette er QuickWatch vinduet. Her har vi lagt inn uttrykket a*b og klikket på Recalculate. Hvis vi nå klikker på Add Watch vi utrykket bli lagt inn i Watch vinduet, hvor det kan overvåkes. Debugg vinduer Debuggeren har disse vinduene som man kan åpne eller lukke ved å klikke på symbolene i verktøylinjen: Watch Viser navn og verdier for variabler og utrykk. Man kan legge dette inn i fire forskjellige vinduer. På den måten kan man gruppere de data man ønsker å overvåke. Slik er det mulig å få bedre oversikt, f.eks hvis man skal overvåke mange data som kan være lokalisert til forskjellige moduler i programmet. Neste figur viser Watch vinduet. 4
7 Når en verdi skifter farge til rødt indikerer det en nylig endring i verdi. Vinduet har form av et regneark. Man kan sette inn på navn og verdier. Variabler Vinduet viser informasjon om variabler. Det er tre tagger. I Auto vises variabler brukt i nåværende og foregående setninger. Likeledes vises returverdier fra funksjoner. Locals har variabler som er lokale i den aktuelle funksjon man er inne i. This viser objektet pekt på av this. Her er et vindu fra en kjøring. Legg merke til hvordan tabeller vises. man kan ekspandere eller komprimere ved å klikke på + eller symbolene. En verdi angitt med rødt har nylig skiftet verdi. Registers Dette vinduet viser innholdet i CPU ens generelle registre og statusregistre. Derfor er innholdet avhengig av hvilken prosessor det kjøres på. Dette vinduer er interessant for de som driver med maskinnær programmering. Se figuren. 5
8 Memory Innholdet i datamaskinens lager (minne) vises i dette vinduet. Også dette vinduet er mest interessant ved maskinnær programmering. Call stack På norsk stakk. Det viser stakken med alle funksjonskall som er aktive. Sist kalte funksjon øverst. Legg også merke til at figuren viser at sist kalte funksjon inneholder et stopp-punkt og at programmet har stoppet der. Dissassembly. Her vises assembly kode for det kompilerte programmet. Kan være nyttig hvis kildekode ikke finnes. Det er også nyttig hvis det er flere kommandoer på samme linje i kildekode. I kildekoden kan man bare kjøre linje for linje, mens man i assemblerkoden kan kjøre kommando for kommando. 6
9 Figuren ovenfor viser et utsnitt av assembler koden for en funksjon hvor programmet er stoppet. Legg merke til at først kommer en linje fra kildekoden. Deretter følger assembly koden for denne linjen og så nest linje i kildekoden. I dette vinduet kan man gå kommando for kommando ved å klikke på Step inn i (Step Into). Andre menyvalg som berører debugger Edit og Breakpoints får frem denne dialogen: Den gir mulighet for å sette avanserte stopp-punkter i form av bl.a logiske uttrykk, som vist her 1. Man kan få programmet til å stoppe når 1 Under demonstrasjonen i klasserommet fikk vi ikke dette til å fungere. det skyldes at vi satte betingelsen før programmet var startet og ikke kvalifiserte uttrykket med aktuell fil. 7
10 en variabel endrer verdi når et uttrykk endrer verdi når et uttrykk er sant når første element i en tabell skifter verdi når første element i en tabell har en bestemt verdi når et bestemt element i en tabell skifter verdi når et hvilket som helst element i en tabell skifter verdi når et hvilket som av de n første elementene i en tabell skifter verdi når verdien i en peker sifter verdi når verdien i det det pekes på skifter verdi når en verdi i en bestemt lageradresse skifter verdi når e register endres når et registeruttrykk er sant Det er stort samme fremgangsmåte. Man klikker på Edit og deretter Breakpoints. Når dialogen spretter opp Data taggen. Uttrykk skrives inn i tekstboksen under Enter the expression to be evaluated. Klikk OK til slutt for å sette stopp-punktet. View og Debug Windows gir rask tilgang til de forskjellige vinduer. Tools, Options og Debug gir mulighet for å spesifisere forskjellige egenskaper for debuggeren. 8
11 Et lite eksempel Her er et veldig enkelt program. Det skal konvertere fra kilometer til engelske mile og nautiske mil. #include <iostream.h> int tilmile (double& kilometer); int tilnautiskmile (double& kilometer); void main( void ) { double antallkm; cout << "Sett inn antall km som skal konverteres --> "; cin>> antallkm; cout << antallkm << " km " << " er " << tilmile( antallkm ) << " engelske mile" << endl; cout << antallkm << " km " << " er " << tilnautiskmile( antallkm ) << " nautiske mil" << endl; } int tilmile( double& kilometer) { if (kilometer >= 0.0) { kilometer = kilometer / 1.609; return 1; } } return 0; int tilnautiskmile( double& kilometer) { if (kilometer >= 0.0) { kilometer = kilometer / 1.852; return 1; } } return 0; Konverteringen skjer i to forskjellige funksjoner. Vi kan tenke oss at disse funksjonene er skrevet av andre programmere og tilhører et bibliotek som vi har hentet de fra. Det vi tror er at resultatet av konverteringen returneres i funksjonen. Vi kjører programmet og får dette resultatet. 9
12 Dette er åpenbart feil. En inspeksjon av koden vil fort fortelle oss hvorfor, men la oss se hvordan vi kunne bruke debuggeren til å lokalisere feilkilden (buggen). Vi vil kjøre en test: Inndata 1km Forventet resultat mile og nautiske mil Setter stopp-punkter etter at data er lest inn og etter beregningene. I Watch vinduet vil vi overvåke verdien av konverteringene ed å se på uttrykkene antallkm / og antallkm / samt verdien av antallkm. Figuren viser situasjonen etter at programmer er stoppet ved første stopp-punkt. 10
13 Klikk her for å sette stopp-punkt Disse uttrykkene er skrevet direkte inn Så kjører vi frem til neste stopp-punkt og får denne situasjonen vist i et utsnitt. Det vi ser er at returverdien til funksjonen tilmile() er 1 og at antallkm har endret verdi. Det samme har uttrykkene. Så det er åpenbart at det er noe galt med funksjonene som gjør konverteringene. 11
14 Vi vil kikke nærmere på det som skjer i linjene som gjør utskriften og klikker på dissassemblervinduet. Neste utsnitt vier situasjonen etter at vi har gått trinn for trinn og stoppet etter kall til funksjonen tilnautiskmil(). Vi ser at uttrykkene igjen har skiftet verdi. Så det er i funksjonene det skjer. Dette får oss til å se nærmere på spesifikasjonene for funksjonene. De viser at den konverterte verdi returneres i argumentet ved referanseoverføring. Returverdien i funksjonen skal 12
15 indikere om det var en lovlig verdi eller ikke som ble overført. Det er den standard som er brukt. Vi kan altså ikke bruke funksjonene på den måten. Enten må vi lage nye funksjoner som foretar verdioverføring eller så må vi skrive om programmet slik at det bruker funksjonene riktig. I det første tilfelle må vi avvike en standard som gjelder og det bør vi antagelig ikke gjøre. Så i tillegg til å se på hvordan debuggeren kan brukes, ser vi også hvor viktig det er å sikre at man har forstått grensesnittet til funksjoner som skal gjenbrukes i nye sammenhenger. 13
1. Å lage programmer i C++
Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Å lage programmer i C++ Tore Berg Hansen og Else Lervik Rividert siste gang 24. august 2006 1. Å lage programmer i C++ Resymé: Dette notatet
Detaljer1. Å lage programmer i C++
Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Å lage programmer i C++ Tore Berg Hansen og Else Lervik Rividert siste gang 29. august 2005 1. Å lage programmer i C++ Resymé: Dette notatet
DetaljerDel 4 Noen spesielle C-elementer
Del 4 Noen spesielle C-elementer 1 RR 2016 Header-filer inneholder Prototypene til funksjonene i standard biblioteket Verdier og definisjoner som disse funksjonene bruker #include #include
DetaljerDagens tema: Enda mer MIPS maskinkode
Dagens tema: Enda mer MIPS maskinkode (P&H: 3.6 3.8 + 6.1 + A.6 + A.10) Pseudoinstruksjoner Flere instruksjoner Mer om funksjonskall Stakken Avhengigheter Direktiver Alt er bit! Kommunikasjon med C Ark
DetaljerHvordan en prosessor arbeider, del 1
Hvordan en prosessor arbeider, del 1 Læringsmål Kompilator, interpret og maskinkode CPU, registre Enkle instruksjoner: de fire regnearter Mer informasjon om temaet Internett Lokalnett (LAN) Mitt program
DetaljerTilstandsmaskiner kalles på engelsk for Finite State Machines.
Tilstandsmaskiner Tilstandsmaskiner kalles på engelsk for Finite State Machines. Tilstandsmaskiner er en metode til å beskrive systemer med logisk og dynamisk/tidsmessig oppførsel. Metoden tilstandsmaskiner
DetaljerArgumenter fra kommandolinjen
Argumenter fra kommandolinjen Denne veiledningen er laget for å vise hvordan man kan overføre argumenter fra kommandolinjen til et program. Hvordan transportere data fra en kommandolinje slik at dataene
DetaljerFinne ut om en løsning er helt riktig og korrigere ved behov
Finne ut om en løsning er helt riktig og korrigere ved behov Finurlige feil og debugging av kode IN1000, uke5 Geir Kjetil Sandve Oppgave (Lett modifisert fra eksamen 2014) Skriv en funksjon Dersom parameteren
DetaljerTDT4102 Prosedyreog objektorientert programmering Vår 2016
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyreog objektorientert programmering Vår 2016 Øving 2 Frist: 2016-01-29 Mål for denne øvingen:
Detaljer1. NetBeans IDE: Lage en enkel mobilapplikasjon
Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag NetBeans IDE: Lage en enkel mobilapplikasjon Mildrid Ljosland/Lene Hoff 09.09.2008 Lærestoffet er utviklet for faget SO350D J2ME for programmering
Detaljer2 Om statiske variable/konstanter og statiske metoder.
Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.
DetaljerFinne ut om en løsning er helt riktig og korrigere ved behov
Finne ut om en løsning er helt riktig og korrigere ved behov Finurlige feil og debugging av kode IN1000, uke5 Henrik H. Løvold Oppgave (Lett modifisert fra eksamen 2014) Skriv en funksjon Dersom parameteren
DetaljerTDT4102 Prosedyre og Objektorientert programmering Vår 2014
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyre og Objektorientert programmering Vår 2014 Øving 1 Frist: 2014-01-24 Mål for denne øvinga:
DetaljerProgrammeringsspråket C Del 3
Programmeringsspråket C Del 3 Michael Welzl E-mail: michawe@ifi.uio.no 29.08.13 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen
DetaljerKom i gang med programmering i Java
Kom i gang med programmering i Java Dette dokumentet forteller hvordan du skal komme i gang med programmering inkludert nedlasting av den programvare du trenger samt oppsett av disse samt en del innstillinger
DetaljerKapittel 1 En oversikt over C-språket
Kapittel 1 En oversikt over C-språket RR 2015 1 Skal se på hvordan man En innføring i C Skriver data til skjermen Lese data fra tastaturet Benytter de grunnleggende datatypene Foretar enkle matematiske
DetaljerProgrammeringsspråket C Del 3
Programmeringsspråket C Del 3 Michael Welzl E-mail: michawe@ifi.uio.no 8/25/10 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen
Detaljer2 Om statiske variable/konstanter og statiske metoder.
Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når
Detaljeroppgavesett 4 INF1060 H15 Øystein Dale Hans Petter Taugbøl Kragset September 22, 2015 Institutt for informatikk, UiO
oppgavesett 4 INF1060 H15 Øystein Dale Hans Petter Taugbøl Kragset September 22, 2015 Institutt for informatikk, UiO oppgave 1 Hvorfor har vi operativsystemer? Portable programmer Enklere å programmere
DetaljerProgrammering i C++ Løsningsforslag Eksamen høsten 2005
Programmering i C++ Eksamen høsten 2005 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning 7. desember 2005 Generelt Denne eksamensoppgaven består av tre oppgaver, pluss en ekstraoppgave. Det
DetaljerTDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python
TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python Professor Guttorm Sindre Institutt for datateknikk og informasjonsvitenskap Læringsmål og pensum Mål Vite hva et
DetaljerTDT4102 Prosedyre og Objektorientert programmering Vår 2014
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyre og Objektorientert programmering Vår 2014 Øving 1 Frist: DD.MM.YYYY Mål for denne øvinga:
DetaljerProgrammeringsspråket C Del 3
Programmeringsspråket C Del 3 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen malloc
DetaljerDet viktigste i en moderne datamaskin er hovedkortet («motherboard»):
Hovedkortet Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Hovedkortet Grovt sett inneholder et hovedkort En prosessor Minne (for både program og data) Klokke Kontrollere for periferutstyr.
DetaljerDagens tema: 12 gode råd for en kompilatorskriver
Dagens tema: 12 gode råd for en kompilatorskriver Hvordan sjekke navn? Testutskrifter 12 gode råd Hva skal gjøres med navn? Sjekking av navn En kompilator må også sjekke riktig navnebruk: Det må ikke forekomme
DetaljerProgrammeringsspråket C Del 3
Programmeringsspråket C Del 3 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no 9/1/2005 inf1060 V05 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen
DetaljerLæringsmål og pensum. https://www.youtube.com/watch? v=nkiu9yen5nc
1 TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python Professor Alf Inge Wang 2 https://www.youtube.com/watch? v=nkiu9yen5nc 3 Læringsmål og pensum Mål Lære om
DetaljerEn oppsummering (og litt som står igjen)
En oppsummering (og litt som står igjen) Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Eksamen En oppsummering Oppsummering Pensum læreboken til og med kapittel 7 forelesningene de
DetaljerDet viktigste i en moderne datamaskin er hovedkortet («motherboard»):
Hovedkortet Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Data.data Stakk %EAX %ECX %EDX %EBP %ESP Prosessor Kode Minne.text Hovedkortet Grovt sett inneholder et hovedkort En prosessor
DetaljerDet viktigste i en moderne datamaskin er hovedkortet («motherboard»):
Hovedkortet Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Data.data Stakk %EAX %ECX %EDX %EBP %ESP Prosessor Kode Minne.text Hovedkortet Grovt sett inneholder et hovedkort En prosessor
DetaljerIntroduksjon til DARK assembly
Introduksjon til DARK assembly Magnus Jahre Institutt for datateknikk og informasjonsvitenskap 2 Plan Assembly vs. Java Dark stakkmaskin Oversikt over stakkmaskinen Dark stakkmaskin eksempel Dark Load-Store
DetaljerObligatorisk Innlevering 2
Obligatorisk Innlevering 2 INF5110 - Kompilatorteknikk Våren 2017 Frist 07.05.2017 23:59 Dette er den andre av to oppgaver våren 2017. Den bygger videre på det som er gjort i den første innleveringen.
DetaljerSoloball. Introduksjon. Steg 1: En roterende katt. Sjekkliste. Skrevet av: Geir Arne Hjelle
Soloball Skrevet av: Geir Arne Hjelle Kurs: Scratch Tema: Blokkbasert, Spill Fag: Matematikk, Programmering Klassetrinn: 1.-4. klasse, 5.-7. klasse, 8.-10. klasse Introduksjon Vi skal nå lære hvordan vi
DetaljerOppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):
Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Grovt sett inneholder det En prosessor Minne (for både program og data) Klokke Kontrollere for periferutstyr.
DetaljerNOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl
NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse Dessverre litt få figurer INF 5110, 10/5-2011, Stein Krogdahl Oversikt over Javas class-filer og byte-kode Disse formatene ble planlagt fra start
DetaljerSprettende ball Introduksjon Processing PDF
Sprettende ball Introduksjon Processing PDF Introduksjon: I denne modulen skal vi lære et programmeringsspråk som heter Processing. Det ble laget for å gjøre programmering lett for designere og andre som
DetaljerTDT4102 Prosedyre og Objektorientert programmering Vår 2015
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyre og Objektorientert programmering Vår 2015 Øving 1 LF LØSNINGSFORSLAG Mål for denne øvinga:
DetaljerØving 0 - Xcode TDT4102
Øving 0 - Xcode TDT4102 Frivillig Øving Mål for denne øvingen: Bli kjent med programmeringsverktøy Lage et første program kun med teksteditor og kompilator Lage et første program med Xcode Denne øvingen
DetaljerTDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6)
1 TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6) Anders Christensen anders@idi.ntnu.no Rune Sætre satre@idi.ntnu.no 2 Læringsmål og pensum Læringsmål: Synlighet av variabler
DetaljerDagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.
Dagens tema Dagens tema C-programmering Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Adresser og pekere Parametre Vektorer (array-er) Tekster (string-er) Hvordan ser minnet
DetaljerOperativsystemer og grensesnitt
Operativsystemer og grensesnitt Ulike måter å bruke OS'et på Application Program Interface (API) Applikasjoner (ofte C-programmer) som f.eks. emacs, som bruker tjenestene i OS ved å kalle på funksjoner
DetaljerDagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?
Dagens tema Dagens tema Kildekode Hva er kompilering? Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Hvordan oppdage feil? Anta at vi lager dette lille
DetaljerINF5110. Oblig 2 presentasjon
INF5110 Oblig 2 presentasjon Informasjon Oppgaven Semantikksjekk Kodegenerering Bytecode-biblioteket Ant-targets Oppsummering Oversikt Informasjon Oblig 2 tilgjengelig på kurssiden Patch med testfiler
DetaljerDagens tema INF2270. Cs preprosessor. Separat kompilering av C funksjoner. C og minnet. Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15
Dagens tema Cs preprosessor Separat kompilering av C funksjoner C og minnet Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15 Cs preprosessor Før selve kompileringen går C kompilatoren gjennom
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
DetaljerDagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?
Dagens tema: 12 gode råd for en kompilatorskriver Hva skal gjøres med navn? Sjekking av navn Hvordan sjekke navn? Testutskrifter 12 gode råd En kompilator må også sjekke riktig navnebruk: Det må ikke forekomme
DetaljerKanter, kanter, mange mangekanter
Kanter, kanter, mange mangekanter Nybegynner Processing PDF Introduksjon: Her skal vi se på litt mer avansert opptegning og bevegelse. Vi skal ta utgangspunkt i oppgaven om den sprettende ballen, men bytte
DetaljerINF Obligatorisk innlevering 5
INF1000 - Obligatorisk innlevering 5 Frist: 2. Oktober kl 22:00 Temaer denne uka: Klasser og objekter. I denne obligen skal du som nytt tema jobbe med klasser og objekter, i tillegg til å bruke det du
DetaljerINF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012
INF1000 - Uke 10 Ukesoppgaver 10 24. oktober 2012 Vanlige ukesoppgaver De første 4 oppgavene (Oppgave 1-4) handler om HashMap og bør absolutt gjøres før du starter på Oblig 4. Deretter er det en del repetisjonsoppgaver
DetaljerEivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen
Eivind Gard Lund 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen Informasjon Semantikksjekk Kodegenerering Oblig 2 tilgjengelig på kurssiden Bygger på deres oblig 1 kode. Det er lagt ut
DetaljerNOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse
NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse Dessverre litt få figurer INF 5110, 8/5-2012, Stein Krogdahl Byte-koden for Java og.nett (C#) http://en.wikipedia.org/wiki/java_bytecode_instruction_listings
Detaljer7034 Trondheim - NTH 1.1 KILDEPROGRAM S KOMPILERING OG ASSEBMLERING S LENKING AV OBJEKTFILER S UTFØRELSE AV PROGRAMMET S.
INFOAMASJON FRA RUN IT "IQNISINTIilIT "ed UNIVEfllSiTlTlT I TJIIIONCMelM ~ostadr.: Elgeseter at. ~O Telex: 55 620 sintf n Teleqram: COMPf.i'TING NTB 7034 Trondheim - NTH Tlf. ; (8i) 593 l:c (07)593028
DetaljerTDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang
2 TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python Professor Alf Inge Wang 3 https://www.youtube.com/watch? v=nkiu9yen5nc 4 Læringsmål og pensum Mål Lære om
DetaljerINF Oblig 2 semantikksjekk og kodegenerering
INF5110 - Oblig 2 semantikksjekk og kodegenerering Magnus Haugom Christensen Instituttet for Informatikk Universitetet i Oslo 27. Mars - 2012 Oversikt Informasjon Oppgaven Semantikksjekk Kodegenerering
DetaljerProgram delegate. Lage et nytt prosjekt i Visual Studio
Program delegate Kommunikasjon mellom objekter er en utfordring i objektorientert programmering. Dette GUI eksempelet viser hvordan bruke en delegate til å gjøre metodekall i et annet objekt. Vi skal legge
DetaljerEGENDEFINERTE FUNKSJONER I SAS OG LITT OM OPEN SOURCE INTEGRASJON SAS FANS I STAVANGER 21.10.2015, MARIT FISKAAEN (SAS INSTITUTE)
EGENDEFINERTE FUNKSJONER I SAS OG LITT OM OPEN SOURCE INTEGRASJON SAS FANS I STAVANGER 21.10.2015, MARIT FISKAAEN (SAS INSTITUTE) EGENDEFINERTE FUNKSJONER INNLEDNING 2 På FANS 4. mars 2015 ble det vist
DetaljerProgrammeringsspråket C Del 2
Programmeringsspråket C Del 2 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no 30.08.2005 inf1060 H05 1 Et eksempel Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. 30.08.2005
DetaljerMERK: DU MÅ IKKE PRØVE Å INSTALLERE PROGRAM- VAREN FØR DU HAR LEST DETTE DOKUMENTET.
INSITE INSTALLASJONSBLAD Side 2: Installere INSITE Side 8: Fjerne INSITE MERK: DU MÅ IKKE PRØVE Å INSTALLERE PROGRAM- VAREN FØR DU HAR LEST DETTE DOKUMENTET. FEIL INSTALLASJON ELLER BRUK KAN FØRE TIL FEILAKTIGE
DetaljerJentetreff INF1000 Debugging i Java
Jentetreff INF1000 Debugging i Java Ingrid Grønlie Guren ingridgg@student.matnat.uio.no 11. november 2013 Kort om feilmeldinger i Java Java har to ulike type feilmeldinger som man kan få når man skriver
DetaljerForkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.
Forkurs INF1010 Dag 2 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 14. januar 2016 Forkurs INF1010 - dag 2 Feilmeldinger 2 Forkurs INF1010
DetaljerKonvertering av klientdata fra Sticos A rsoppgjør 2011 til Total A rsoppgjør 2012
Konvertering av klientdata fra Sticos A rsoppgjør 2011 til Total A rsoppgjør 2012 Dette dokumentet beskriver fremgangsmåten på hvordan grunnlagsdata for den enkelte klient kan eksporteres fra Sticos Årsoppgjør
DetaljerLitt om Javas class-filer og byte-kode
Litt om Javas class-filer og byte-kode INF 5110, 11/5-2010, Stein Krogdahl (Dessverre litt få figurer) Disse formatene ble planlagt fra start som en del av hele Java-ideen Bt Byte-koden gir portabilitet
DetaljerProgrammeringsspråket C Del 2
Programmeringsspråket C Del 2 Michael Welzl E-mail: michawe@ifi.uio.no 8/25/10 inf1060 1 Et eksempel Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. 8/25/10 inf1060
DetaljerProgrammeringsspråket C Del 2
Et eksempel Programmeringsspråket C Del 2 Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no inf1060 1 inf1060 2 Forklaring:
DetaljerPLS PC-øving nr. 3 Global Label og Local Label, flagg og CJ
PLS PC-øving nr. 3 Global Label og Local Label, flagg og CJ Utgave: 1.02 Utarbeidet av: AH Dato: 10.10.12 Revidert av: AH Dato: 270114 Tema i oppgaven Oppgaven går ut på å lære seg å ta i bruk listene
DetaljerOPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?
OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.
DetaljerFra Python til Java, del 2
Fra Python til Java, del 2 Hvordan kjøre Java? På Ifis maskiner På egen maskin Et eksempel Array-er For-setninger Lesing og skriving Metoder Biblioteket Hva trenger vi egentlig? Å kjøre Java For å kunne
Detaljer1. Grunnleggende C++ 1.1. Introduksjon til kurset og til C++ Innhold
Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag 1. Grunnleggende C++ Else Lervik 12.08.2013 Lærestoffet er utviklet for faget IFUD1048 C++ for programmerere med grunnlag i lærestoff fra
DetaljerØving i Tornado og VxWorks
Øving 5 Øving i Tornado og VxWorks Innledning Denne øvingen går ut på å programmere for et målsystem som benytter sanntidsoperativsystemet VxWorks. Til dette benyttes utviklingssystemet Tornado fra WindRiver.
DetaljerLøse reelle problemer
Løse reelle problemer Løse problemer med data fra fil, samt litt mer om funksjoner IN1000, uke6 Geir Kjetil Sandve Mål for uken Få enda mer trening i hvordan bruke løkker, samlinger og beslutninger for
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
DetaljerSoloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere.
Soloball Introduksjon Scratch Introduksjon Vi skal nå lære hvordan vi kan lage et enkelt ballspill med Scratch. I soloball skal du styre katten som kontrollerer ballen, slik at ballen ikke går i nettet.
DetaljerDagens tema C, adresser og pekere
Dagens tema C, adresser og pekere (Kapittel 17 i Patt&Patel-boken) Variable og adresser Pekervariable Parametre Dynamisk allokering Stakker og ringbuffere Ark 1 av 26 Adresser Som nevnt tidligere ligger
DetaljerArk 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.
Dagens tema C, adresser og pekere (Kapittel 17 i Patt&Patel-boken) Variable og adresser Pekervariable Parametre Dynamisk allokering Stakker og ringbuffere Adresser Som nevnt tidligere ligger data og programkode
DetaljerDenne oppgaven innfører funksjoner, og viser hvordan vi kan skrive og teste funksjoner i Ellie.
Ellie og funksjoner Skrevet av: Teodor Heggelund Kurs: Elm Tema: Tekstbasert, Nettside Fag: Programmering, Teknologi Klassetrinn: 8.-10. klasse, Videregående skole Introduksjon Denne oppgaven innfører
DetaljerOversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays
Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson
DetaljerProgrammeringsspråket C
Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger
DetaljerINF uke 2. Inputt, beslutninger, kontrollflyt og prosedyrer
INF1001 - uke 2 Inputt, beslutninger, kontrollflyt og prosedyrer Repetisjon fra forrige uke Lese inn fra tastaturet Beslutninger Kontrollflyt Prosedyrer Outline: Repetisjon fra forrige uke Lese inn fra
DetaljerINF 1000 høsten 2011 Uke september
INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus 1 INF1000 undervisningen Forelesningene: Første
DetaljerDen siste dagen. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen
Den siste dagen Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen En oppsummering Oppsummering Pensum Læreboken til og med kapittel 7, kompendiet, forelesningene
DetaljerTDT4102 Prosedyre og Objektorientert programmering Vår 2015
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyre og Objektorientert programmering Vår 2015 Øving 3 Frist: 2014-02-07 Mål for denne øvinga:
DetaljerINF1000 undervisningen INF 1000 høsten 2011 Uke september
INF1000 undervisningen INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Forelesningene: Første
DetaljerDel 1 En oversikt over C-programmering
Del 1 En oversikt over C-programmering 1 RR 2016 Starten C ble utviklet mellom 1969 og 1973 for å re-implementere Unix operativsystemet. Er et strukturert programmeringsspråk, hvor program bygges opp av
DetaljerSprettende ball. Introduksjon: Steg 1: Vindu. Sjekkliste. Skrevet av: Sigmund Hansen
Sprettende ball Skrevet av: Sigmund Hansen Kurs: Processing Tema: Tekstbasert, Animasjon Fag: Matematikk, Naturfag, Programmering, Kunst og håndverk Klassetrinn: 8.-10. klasse, Videregående skole Introduksjon:
DetaljerOversikt Kodegenerering Variable Setninger Uttrykk While-setningen Oppsummering
Dagens tema Dagens tema: Kodegenerering Introduksjon Enkle variable Uttrykk Tilordning Litt mer kompliserte setninger med betingelser (Alt om kodegenerering unntatt funksjoner og array-er.) Prosjektoversikt
DetaljerDagens tema. Datamaskinenes historie. De første moderne datamaskiner. Løsning. Menneskene har alltid prøvd å lage maskiner for å løse sine problemer.
Dagens tema Dagens tema Charles Babbage Datamaskinenes historie maskinen Litt datamaskinhistorie Registre og lagre Instruksjoner kode kode Menneskene har alltid prøvd å lage maskiner for å løse sine problemer.
DetaljerKom i gang 1: Lage en enkel tavle for å skrive
Kom i gang 1: Lage en enkel tavle for å skrive Enkle tavler kan brukes for å skrive korte setninger om et spesielt emne. I dette eksemplet vil vi lage et miljø med en enkel tavle for å skrive setninger
DetaljerOm du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.
Pingviner på tur Skrevet av: Geir Arne Hjelle Kurs: Scratch Tema: Blokkbasert, Spill Fag: Programmering Klassetrinn: 1.-4. klasse, 5.-7. klasse, 8.-10. klasse Introduksjon Velkommen til Scratch. Vi skal
DetaljerHusk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.
Skilpaddeskolen Skrevet av: Oversatt fra Code Club UK (//codeclub.org.uk) Oversatt av: Bjørn Einar Bjartnes Kurs: Python Tema: Tekstbasert Fag: Programmering, Kunst og håndverk Klassetrinn: 8.-10. klasse
DetaljerHØYSKOLEN I OSLO, AVDELING FOR INGENIØRUTDANNING
HØYSKOLEN I OSLO, AVDELING FOR INGENIØRUTDANNING Eksamensoppgave i kurset: Programmering i C++. Fagnr: LV 121 A Eksamensdato: 10 februar, 2003. Faglærer: Cecilie Rolstad Antall oppgaver: 5 Antall sider,
DetaljerIntroduksjon...5. Systemkrav...7. For Windows...9
Innholdfortegnelse Introduksjon...................................5 Systemkrav...................................7 For Windows...................................9 Installere programvare for bildeutskrift
DetaljerDagens tema. Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering?
Dagens tema Dagens tema Kildekode Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette
DetaljerViktig. Rettet i koden. Obligatorisk oppgave 2 Litt flere detaljer om semantikksjekk og kodegenerering. Semantikksjekk
Obligatorisk oppgave 2 Litt flere detaljer om semantikksjekk og kodegenerering Viktig Ny patch (patch_oblig2.zip) er lagt ut (15/4) Oblig 1 vil bli rettet denne uken Sjekk om det er registrert at den er
DetaljerInstallere JBuilder Foundation i Mandrake Linux 10.0
Installere JBuilder Foundation i Mandrake Linux 10.0 Installasjon av JBuilder Foundation på Linux (dekker her spesifikt fremgangen ved bruk av Mandrake Linux 10.0, men distribusjon vil gjøre liten eller
DetaljerKanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen
Kanter, kanter, mange mangekanter Skrevet av: Sigmund Hansen Kurs: Processing Tema: Tekstbasert, Animasjon Fag: Matematikk, Programmering, Kunst og håndverk Klassetrinn: 8.-10. klasse, Videregående skole
Detaljer