Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: FreePascal / Dumppi

idiootti [31.07.2009 17:08:39]

#

Hei!

Miten ohjelman kaatuessa (käytän Lazarusta) saa ohjelman ajoruudun säilymään näytössä sen sijaan että se katoaisi? Kaatumistilanteessa tulostuu ruudulle mm. aliohjelmien kutsustack, josta olisi todellista hyötyä ongelman selvittämisessä, jos se vain säilyisi siinä ruudulla kauemmin kuin 0,1 sekuntia... Periaatteessa siis, onko mahdollista lisätä johonkin (keskeytysrutiiniin tms.) jokin esim. readln-käsky, joka saisi aikaan sen että ohjelmaruutua ei suljettaisi kaatumistilanteessa?

Grez [31.07.2009 17:26:52]

#

Siis jos se on konsolisovellus, niin eikö riitä, että laitat ajoparametreista, että konsolia ei suljeta automaattisesti ohjelman ajon päättyessä..

idiootti [31.07.2009 17:51:32]

#

Joo, konsolisovellushan se. Olen tässä vaan sen verran aloittelija, että en tiedä miten kuvaamasi temppu tehdään. Voisitko laittaa tarvittavan parametrin näkyviin?

Metabolix [31.07.2009 18:42:14]

#

Voit ajaa ohjelman Lazaruksen sijaan komentoriviltä. Siis käynnistä erillinen komentorivi, siirry cd-komennolla oikeaan hakemistoon ja käynnistä ohjelma. (Voit lukea samaisen neuvon myös C++-oppaan puolelta; tämä ei riipu kielestä.) Windowsin komentoriviä käsittelee myös mm. tämä sivusto, ja muille järjestelmille löytyy tietoa vielä helpommin.

Voi tosin olla, että näin ajettuna ohjelma ei tulostakaan noita hyödyllisiä tietoja...

idiootti [31.07.2009 20:33:13]

#

Joo, olisi tosiaan käyttökelpoista saada konsoli säilymään auki ajon päättyessä. Se varmaan onnistuu jollakin yhdellä parametrilla, vaan millä?

Se hyödyllinen tieto, jonka sillä tavalla saisi, on sama informaatio jonka saa käskyllä

dump_stack(stdout,get_frame);

Tämä käsky saattaa olla joissakin muissakin kuin kaatumistilanteissa hyödyllinen; sen voi koodata sovellusohjelmaan ja sen avulla tarkistaa callstackin tilanteen, jos jotenkin epäilee ohjelman toimintaa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta