Hellä ensikosketus. Tomi Kiviniemi

Samankaltaiset tiedostot
PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

Ohjelmoinnin peruskurssi Y1

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Ohjelmoinnin peruskurssi Y1

Luento 2. Timo Savola. 31. maaliskuuta 2006

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Makrojen mystinen maailma lyhyt oppimäärä

Ohjelmoinnin perusteet Y Python

2 Konekieli, aliohjelmat, keskeytykset

Johdatus edistyneeseen web-kehitykseen. Juuso Lappalainen

Ohjelmoinnin peruskurssien laaja oppimäärä

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Ohjelmoinnin peruskurssi Y1

UBUNTU. UBUNTU - Peruskäyttö. Työpöytä. GNU Free Documentation License. Sisäänkirjautuminen. Yläpaneelissa on kolme valikkoa. Paneelit ja valikot

Ohjelmoinnin perusteet Y Python

Octave-opas. Mikä on Octave ja miksi? Asennus

KYMENLAAKSON AMMATTIKORKEAKOULU

1 Visma Econet Pro Arkistointi

Matlab- ja Maple- ohjelmointi

Ohjelmoinnin perusteet Y Python

Luento 4. Timo Savola. 21. huhtikuuta 2006

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

5. HelloWorld-ohjelma 5.1

Komentotulkki. Kysymyksiä

YHTEYDEN OTTAMINEN CSC:N KONEELLE HIPPU

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

Korpusten käsittely clt131, P Luento 5

Ohjelmointi 1 / syksy /20: IDE

12. Näppäimistöltä lukeminen 12.1

Ohjelmoinnin perusteet Y Python

Hakemistojen sisällöt säilötään linkitetyille listalle.

Ohjelmistojen testaus ja hallinta. Gradle

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

1. NetBeans-ohjelman asennus ja käyttöönotto pva

1.5 Suljetulla välillä jatkuva funktio. Perusominaisuudet.

Zeon PDF Driver Trial

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

1. HARJOITUS harjoitus3_korjaus.doc

12. Javan toistorakenteet 12.1

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

ITKP102 Ohjelmointi 1 (6 op)

12. Javan toistorakenteet 12.1

Ohjelmoinnin peruskurssien laaja oppimäärä

Simulaattorin asennus- ja käyttöohje

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Luento 3. Timo Savola. 7. huhtikuuta 2006

T Käyttöliittymäsuunnittelu. Tehtävä 1: Komentorivipohjainen käyttöliittymä

Hieman linkkejä: lyhyt ohje komentoriviohjelmointiin.

CLT131 Korpusten käsittely

Harjoitustyö 1: Palkkatilastot

Kappale 18: Teksti-editori

Osoittimet ja taulukot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Linux ylläpitäjän opas. Tärkeimmät komennot, logit ja muuta hömppä *^_^* by Hannu Laitinen ETA14KT

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

add_action( wordcamp_jkl, johdatus_filttereihin );

Hannu Valtanen Oy. Linux vi-editori

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

11. Javan toistorakenteet 11.1

Perusohje vi-editorin käyttöön

Ohjelmoinnin perusteet Y Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Matlab-perusteet. Jukka Jauhiainen. OAMK / Tekniikan yksikkö. Hyvinvointiteknologian koulutusohjelma

Ohjelmoinnin perusteet Y Python

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Mathematica Sekalaista asiaa

Kopio saamasi pelaajatiedosto (.plr) Game01-alikansioon. Valitse pelissä Continue Campaign.

ATK tähtitieteessä. Osa 5 - IDL datan sovitusta ja muita ominaisuuksia. 25. syyskuuta 2014

Käsikirjan paperiversiota ei enää ylläpidetä ohjeen päivämäärän jälkeen. Viimeisimmät versiot ohjeista löydät ohjelman Help-ruudulta.

Ohjelmoinnin peruskurssien laaja oppimäärä

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

LAS-TIEDOSTON SISÄLTÖ LIITE 2/1

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

IDL - datan sovitus. ATK tähtitieteessä. IDL - esimerkiksi linfit. IDL - esimerkiksi linfit

11/20: Konepelti auki

Microsoft Outlook Web Access. Pikaohje sähköpostin peruskäyttöön

Sukupuu -ohjelma. Ossi Väre ( ) Joni Virtanen ( )

58131 Tietorakenteet ja algoritmit (syksy 2015)

Harjoitus 2: Ohjelmointi (Matlab)

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

UCOT-Sovellusprojekti. Asennusohje

Matematiikan tukikurssi

Harjoitus 2: Ohjelmointi (Matlab)

Transkriptio:

Hellä ensikosketus Tomi Kiviniemi

Asialista Vähän debuggauksen filosofiaa. GDB:n peruskäyttö Netbeansissä. GDB:n peruskäyttö komentoriviympäristössä. Hieman edistyneempää sähellystä komentoriviympäristössä.

GDB Mikä? Miksi? GDB eli GNU Debugger on ohjelma, joka mahdollistaa ohjelmien suorituksen tarkan analysoinnin. Muuttujien tilan tarkasteleminen ja muuttaminen. Ohjelman ajaminen rivi riviltä. Ajon keskeyttäminen etukäteen määritellyissä kohdissa (breakpoint). Täydellistä koodia on maailmassa valitettavan vähän, ja esimerkiksi debug-tulosteet ovat usein turhan kömpelö tapa listiä bugeja. Debuggeri on hyödyllinen myös tutustuttaessa ohjelman (sisäiseen) toimintaan. Se tarjoaa eräänlaisen hiekkalaatikkoympäristön, jota on varsinkin tämän kurssin puitteissa suositeltavaa hyödyntää ihan puhtaassa oppimistarkoituksessa. Erityisesti macin omistajien on syytä kääntää katseensa GDB:n sijaan esimerkiksi LLDB:hen.

Peruskäyttö käytännössä

Komentorivi on ystävä pwd kertoo nykyisen kansion koko polun, siis käytännössä oman sijaintisi ls listaa kansiossa olevat tiedostot cd siirtyy haluttuun kansioon cd directory_x cd.. (edelliseen kansioon) Oman ohjelman nimeltä main ajaminen:./path/to/the/folder/main (piste merkkaa nykyistä kansiota) Kurssin tehtävissä main löytyy aina tehtäväkansiosta katsoen polusta./src/main Oletusarvoisesti Netbeans tallentaa kurssin tehtävät kotikansiosta ( ) katsoen paikkaan /NetBeansProjects/aalto-C-spring-2016/

GDB:n käyttö komentorivillä Ensinnäkin kääntäessä kääntövipujen on syytä olla kunnossa. GCC:n tapauksessa kaikkein olennaisin vipu on -g. Kääntäjäoptimoinnit (-O) kannattaa myös jättää pois. Kurssin tehtävissä kaikki on oletuksena jo valmiiksi hoidossa. gdb./src/main Käynnistää debug-session ohjelmalle main. Vahvasti interaktiivisen ohjelman debuggaus ei yleensä onnistu erityisen hyvin tällä tavalla. Yksi ratkaisu tähän on jo olemassaolevan prosessin liittäminen GDB:hen (attaching an existing process). Kiinnostujat kiinnostuu, nyt ei asiaa käsitellä tarkemmin.

Tärkeimmät komennot start / run käynnistää, alussa keskeytyspiste / ei keskeytyspistettä next / step seuraava rivi, ohittaa funktion / siirtyy funktioon print tulostaa asioita print variable (muuttujan arvo) print *variable (osoitinmuuttujassa olevasta osoitteesta löytyvä arvo (!)) print &variable (muuttujan osoite (!!)) print array[5] (taulukon arvo indeksillä 5) print *array@5 (viisi ensimmäistä taulukon arvoa) break asettaa keskeytyspisteen, breakpointin, jossa ohjelman suoritus keskeytyy break file.c:10 (tiettyyn tiedostoon tietylle riville) break function_name (tiettyyn funktioon) clear poistaa keskeytyspisteet continue jatkaa ohjelman suoritusta

Hyödyllisiä komentoja set variable asettaa muuttujalle uuden arvon set variable a=5 bt backtrace, näyttää kutsupinon: funktiot, joiden kautta tänne ollaan päädytty frame [n] vaihtaa kehystä (siirtyminen kutsupinossa) list [position] listaa lähdekoodia list nykyisen kohdan ympäriltä list 15 rivistä 15 eteenpäin quit poistuu GDB:stä help pika-apua syntaksiin yms. help bt

Muutama edistyneempi ominaisuus

Kun tavallinen breakpoint ei riitä Ehdollinen breakpoint on ilmeinen vaihtoehto. Tyypillinen käyttöesimerkki on toistolausekkeen pysäyttäminen haluttuun kohtaan. break [where] if (condition) break main.c:15 if (i==20) Asettamalla watchpoint saadaan ajo keskeytettyä aina, kun jotain muuttujaa tai lauseketta käytetään (esimerkiksi muutetaan arvoa). watch [variable] kirjoittamisen havainnointi watch weird_variable rwatch lukemisen havainnointi awatch molemmat

Examine Examine on hieman print-komennon kaltainen, raa an muistin tarkastelemiseen tarkoitettu äärimmäisen hyödyllinen komento. x/nfu [address] n montako blokkia? f yhden blokin esitysformaatti (mm. x heksana ja t binäärinä) u yhden blokin koko (mm. b tavu (8 bittiä) ja w sana (4 tavua)) x/10xb &a Kymmenen tavun kokoista blokkia heksamuodossa lähtien muuttujan a osoitteesta. x/2tw &a Kaksi sanan kokoista blokkia (yhteensä siis 2 4 8 = 64 bittiä) binäärimuodossa lähtien muuttujan a osoitteesta.