4.13. Tcl -ohjelman sisäisen tilan tutkiminen

Tcl-kielisiä ohjelmia tehdessä on hyödyllistä tutkia olemassa olevien muuttujien arvoja ja esimerkiksi minkä nimisiä muuttujia on olemassa. Ohjelman tilan tutkiminen on joskus välttämä töntä saadakseen selville, mitä ihmettä ohjelma oikein tekee. Info-komennolla voi tutkia esimerkiksi paikallisten muuttujien ja globaalien muuttujien olemassa oloa. Tämä auttaa silloin, jos joku mu uttuja tuntuu olevan hiukan kadoksissa. Info-komennolla voi tutkia, tietääkö juuri tietty kohta ohjelmasta annettujen muuttujien olemassaolosta mitään. Joskus saattaa epähuomiossa unohtua global-komento aliohjelman alusta, joka voi aiheuttaa harmaita hiuksia nuoremmille ohjelmoijillekin. 

global globbis

set globbis 99

proc prokkis_tee_jotain {} {

puts "Tärkeä luku: $globbis"

}

prokkis_tee_jotain

=>tulkki valittaa tässä vaiheessa ettei tunne koko globbis-muuttujaa...

Esimerkin aliohjelma korjaantuu, kun laitetaan yksinkertaisesti komento "global globbis" aliohjelman ensimmäiseksi riviksi. Vars-optiolla info -komento palauttaa listan muuttujista, joita ohjelma pystyy siinä kohdassa käsittelemään (viittaamaan niiden arvoihin ja muuttamaan niiden arvoa). Seuraavassa esimerkissä aliohjelmassa prokkis1 kutsut tu info vars -komento palauttaisi listan, jossa on muuttujien globbis ja apu nimet. Aliohjelman prokkis2 vastaava komento palauttaisi listan, j ossa olisi vain apu-muuttujan nimi (se on siis eri paikallinen muuttuja kuin aliohjelmassa prokkis1).

global globbis

set globbis 0

proc prokkis1 {} {

global globbis

set apu 88

info vars

}

proc prokkis2 {} {

set apu 77

info vars

}

Muita info-komennon optioita ovat args, body, cmcount, commands, default, exists, globals, level, library, locals, procs, script ja tclversion. N iistä löytyy lisätietoa lähteestä [WEL97W].

history-komennolla saadaan ohjelmassa tietää, mitä komentoja on viimeiseksi suoritettu. history-komento on kätevä silloin, kun ei olla aivan varma, miss&au ml; aliohjelmissa komentoja on käyty suorittamassa. history näyttää oletuksena 20 viimeistä suoritettua komentoa, mutta sen määrää voidaan muuttaa optiolla keep.

Esimerkissä

set x 0

set y 0

history keep 5

set apu1 1

set apu2 90

set apu3 754

 

history

=>

1 history keep 5

2 set apu1 1

3 set apu2 90

4 set apu3 754

5 history 

muutetaan viideksi komentojen määrä, joita history-komento näyttää. Tällöin history-komento näyttää vain viisi edellistä komentoa mukaan lukien komennon, jolla sitä itseään kutsuttiin. history-komento listaa järjestyksessä komennot siten, että suurin järjestysnumero on viimeksi kutsutulla komennolla.

 


previous gif next gif


Luk-tutkielma: Tcl/Tk -opiksi ja iloksi.