Core dump Ohjelman kaatuessa tietynlaisiin virheisiin (erityisesti muistivirheeseen, segmentation fault), sen senhetkinen tila (muistin kuva) voidaan tallettaa.

Slides:



Advertisements
Samankaltaiset esitykset
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
Advertisements

© Hannu Laine 1 Tietorakenteet ja algoritmit Funktio-osoittimet Funktio-osoittimen ja taulukko-osoittimen vertailu Funktio-osoittimen käyttötapoja.
11/9/2012 © Hannu Laine 1 Tietorakenteet ja algoritmit Elegantti toteutus funktiolle insert_to_list_end Alkion lisäys sisällön mukaan järjestettyyn listaan.
2.8.3 Abstraktit tietotyypit
Sovellusohjelman suunnittelu & toteutus
Komentoriviparametrit
C-ohjelmointi, kevät 2006 Taulukot Binääritiedostot Luento
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
XNA peliohjelmointi. XNA Perustuu Microsoftin kehittämään.NET- arkkitehtuuriin ja C#-kieleen. XNA:lla tehdyt pelit toimivat Windows ja XBOX360-alustoilla.
Olioiden taulukointi Perustaulukon käyttö Luokan ilmentymät voidaan tallettaa taulukkoon samoin kuin muuttujat Esimerkki talletetaan taulukkoon opintojaksojen.
Ohjausrakenteet Määräävät ohjelmakoodin suoritusjärjestyksen Ehtolause if – else on muotoa if (lauseke) lause1 else lause2 Jos lauseke on tosi, niin suoritetaan.
Muuttujan osoite int a=1; 0xbfffea64 /* tulostetaan a:n osoite*/ printf(“%p\n”, &a); 0xbfffea68 /* tulostetaan a:n osoite + 1*/ printf(“%p\n”, &a+1); /*
C-ohjelman käännösvaiheet
Tiedosvirtat Puskuroiduissa virroissa lukeminen/kirjoittaminen tapahtuu lohko kerrallaan stdin – puskuroitu (näppäimistö) stdout – purkuroitu (näyttö)
Kelan kuntoutusraha - toimeentuloturva kuntoutuksen aikana Anne Flak suunnittelija.
Ubuntu - peruskäyttö Seuraavassa läpikäydään Ubuntun peruskäyttöä: Perustoiminnot Sisäänkirjautuminen Työpöytä Uloskirjautuminen Lähteinä on käytettu Ubuntu.
Luokan OneNote- muistikirjan luominen Anna Malinen.
KANSALLISKIRJASTO - Kirjastoverkkopalvelut Automaattisia korjauksia Melindassa Ulla Ikäheimo Melinda-talonmiehen tuokio
Linux työpöydällä -kurssi. Kansiohierarkia ● Toisin kuin Windowsissa, Linuxissa (ja muissa POSIX-pohjaisissa järjestelmissä) ei ole C:, D: jne... asemia.
1 Työtapaturmista ilmoittaminen 2010 Riikka-Liisa Haapanen
Osaamistodistus työllistämisen monitoimityökalu Taidolla tulosta -työllisyyden asiantuntijaseminaari
Merkit ja merkistöt C:n perusmerkistö (basic character set): a-z A-Z 0-9 ! " # % & ' ( ) * +, -. / : ; ? [ \ ] ^ _ { | } ~ sekä välilyönti, tabulaattori,
Marjut Salokannel OTT, dosentti  EU:n PSI –direktiivi ja sen uudistaminen  Valtioneuvoston periaatepäätös ( )tietoaineistot avoimesti.
MITÄ UUTTA? Tekstiviestihälytysjärjestelmä Toimikunta- ja maakuntarajat pois Hälytysryhmän jokaisen jäsenen tiedot päähälyttäjien lisäksi (väh. nimi,
Virheiden käsittely Hyvä ohjelma ei koskaan kaadu hallitsemattomasti, vaan tuottaa järkevän virheilmoituksen tai muuten käsittelee virhetilanteen jollain.
Tuotteen dokumentointi
17. Javan omat luokat.
8. Näppäimistöltä lukeminen
13. Loogiset operaatiot.
Tutkimustietovaranto – Virran tuomaa Työpaja
Melindan riittävä laatu
15. Lohkot.
DMPTuulin ohje ylläpitokäyttäjille
Kuvailun keventäminen
Energiaa tarpeeseen mutta ei tarpeettomasti
GNU-Ohjelmointityökalut
Foreach-toistolause foreach-rakenteella on kätevä käydä läpi kaikki taulukon alkiot. Erityisen kätevää se on hajautustaulukon tapauksessa, jossa taulukon.
7. Näytölle tulostaminen
9. Aritmeettiset operaatiot
Posterin otsikko Alaotsikkko Ohjeita
8. Näppäimistöltä lukeminen
9. Aritmeettiset operaatiot
14. Hyvä ohjelmointitapa.
11. Javan valintarakenteet
JavaScriptin perusteet
12. Javan toistorakenteet
Tietoturva.
Kielitietoisuus.
15. Lohkot.
LUKU Lukemisen ja kirjoittamisen oppikirja aikuisille maahanmuuttajille Kaisa Häkkinen & Anna Nylund.
Tietoturvan soveltaminen käytäntöön
12. Javan toistorakenteet
4. Attribuutit.
15. Ohjelmoinnin tekniikkaa
7. Hyvä ohjelmointitapa..
Aineisto CANopen projektit Simulointikirjasto Prosessi RDF-malli
Avoin rajapinta Espoon kaupungin internet-sivuille
Microsoft SharePointin mukauttaminen Verkkosivusto
7. Näytölle tulostaminen
Tilaustoimitusprosessin kuvaus
WinOodi versio 4.4 Katri Laaksonen
Vapaaohjelman arvostelulomakkeen täyttäminen
13. Loogiset operaatiot.
12. Javan toistorakenteet
Mitä uutta töissä.fi-palveluun?
TIETO JA TIETOKONEOHJELMA
Tärkeämpää kuin arvaatkaan
Gopro action-kamerat Hero 4 silver ja hero 2018.
Kentän uudet nettisivut Kentän
Järjestö 2.0 hankkeiden jatkosuunnitelma
Esityksen transkriptio:

core dump Ohjelman kaatuessa tietynlaisiin virheisiin (erityisesti muistivirheeseen, segmentation fault), sen senhetkinen tila (muistin kuva) voidaan tallettaa levylle ns. core dumppina. Nykyisin tämä on yleensä oletuksena estetty, mutta ohjelmankehitysvaiheessa se kannattaa sallia, Bourne- tyyppisissä shelleissä (bash, ksh jne) komennolla ulimit -c unlimited csh:n tyyppisissä vastaavasti limit coredumpsize unlimited Dumpin koolle voi myös antaa

core & gdb Debuggerit kuten gdb osaavat lukea core dumppeja, ja niillä voi helposti katsoa mihin kohtaan ohjelma kaatui ja mitkä olivat muuttujien arvot sillä hetkellä. $ gdb a.out core (gdb) p a Muuttujanimien yms käyttö edellyttää, että ohjelma on käännetty -g optiolla.

Yleisiä bugeja ● Määrittelemättömän muuttujan käyttö. Yleensä kääntäjä valittaa tästä, mutta jos ao. muuttujanimi sattuu olemaan ulompana (kirjastossa tms) määritelty, koodi saattaa kääntyä mutta toimia (joskus hyvinkin oudolla tavalla) väärin ● Alustamattoman muuttujan käyttö. Tästä kääntäjä ei yleensä osaa valittaa, koodi saattaa joskus toimia, joskus ei. Vaikka jotkin muuttujat (static ym) alustetaankin automaattisesti, siihen ei kannata luottaa.

● Vertailun (==) ja sijoituksen (=) sekoittaminen. Joskus kääntäjä osaa varoittaa tästä, joskus ei. ● Puolipiste väärässä paikassa, erityisesti ehdon perässä (“if (x); {... }” yms). ● Kokonaislukujakolasku: /-symbolia käytetään sekä kokonaisluku- että liukulukujakolaskuun joskus hieman hämäävillä säännöillä (esim. “float x = 1/2;”)

● Taulukon ylivuoto. Ehkä kaikkein yleisin tietoturva- aukkojen syy. Tyypillisiä tilanteita: taulukon määritteleminen yhtä liian pieneksi, virheellinen lopetusehto silmukassa, merkkijonofunktioiden käyttö kokoa tarkistamatta, scanf(“%s”...), gets(); debuggausvinkki: watchpoint taulukon viimeiseen alkioon tai sen jälkeen lisättyyn ylimääräiseen muuttujaan.

● Funktion käyttö ilman prototyyppiä: tästä seuraa helposti virheellinen tyyppimuunnos ja oudosti satunnaisen näköisesti väärin toimiva koodi. Erityisesti funktion määrittelyn ollessa samassa tiedostossa myöhemmin prototyyppi helposti unohtuu (kääntäjä tosin usein varoittaa). Erikoistapauksena #include'n puuttuminen. ● Virheelliset/puuttuvat tyyppimuunnokset. Kääntäjä yleensä valittaa, ei kuitenkaan aina (muuttuvien parametrilistojen kanssa, vanhan ei-prototyyppikoodin kanssa).

● scanf, printf ja &: milloin tarvitaan, milloin ei ● scanf ja väärä formaatti: kääntäjä ei huomaa ● scanf(“%s”...) ja tyhjiä sisältävät merkkijonot ● merkkivakiot ('a') vs. merkkijonovakiot (“a”) ● merkkijonojen vertailu ==:lla ja kopiointi =:lla ● merkkijono ilman loppu-\0:aa ● merkkijono johon loppu-\0 ei mahdu

● fgetc, getc, getchar: palautusarvo on int, ei char (“char c; while ((c=getchar()) != EOF) {...” ● feof(): kertoo _edeltävän_ operaation jälkeisen tilan (“while (!feof(f)) {...” EI yleensä toimi oikein) ● syöttöpuskurin tyhjentämättä jättäminen (scanf jne jättävät ylimääräiset sinne seuraavan lukuoperaation löydettäväksi ● switch ja break'in puuttuminen

● && ja || vs. & ja | ● && ja || ja logiikkavirheet (“while (!(a==10) || !(a==20)) {...” ● “a < b < c”, “a == b == c” yms ● prioriteettivirheet (liian vähän sulkuja) ● liian vähän sulkuja makromäärityksissä ● sivuvaikutukset makroissa ● kirjastofunktioiden nimien uudelleenkäyttö ● kirjastofunktioiden virhekoodien tarkistamatta jättäminen

libusb Libusb on käyttäjätason rajapinta USB-laitteiden käyttöön Linuxissa (ja *BSD:ssä ja OsX:ssä). (Varoitus: libusb on muuttumassa, tulollaan oleva versio 1.0 on monin paikoin erilainen kuin nyt käytössä oleva ja tässä kuvattu 0.1 -versio.)

Tyyppejä: struct usb_bus linkitetty lista (next, prev) linkki laitelistan alkuun struct usb_dev linkitetty lista devnum, descriptor, config struct usb_device_descriptor bDeviceClass, idVendor, idProduct,...

● usb_find_busses ● usb_find_devices ● usb_get_busses ● halutun laitteen haku linkkilistasta ● usb_claim_interface, usb_release_interface ● usb_open, usb_close ● usb_set_configuration ● usb_control_msg, usb_get_string...