Android Studio tarjoaa debuggerin, jonka avulla voit tehdä muun muassa seuraavat asiat:

  • Valitse laite, jolla debuggaa sovelluksesi.
  • Aseta taukopisteitä Java-, Kotlin- ja C/C++-koodiin.
  • Tutki muuttujia ja arvioi lausekkeita ajonaikana.

Tällä sivulla on ohjeita debuggerin perustoimintoihin. Lisää dokumentaatiota on myös IntelliJ IDEA:n debuggausdokumentaatiossa.

Enable debugging

Voit aloittaa debuggauksen valmistautumalla seuraavasti:

  • Ota debuggaus käyttöön laitteessa:

    Jos käytät emulaattoria, tämä on oletusarvoisesti käytössä. Mutta jos kyseessä on liitetty laite, sinun on otettava virheenkorjaus käyttöön laitteen kehittäjäasetuksissa.

  • Suorita virheenkorjauskelpoinen build-variantti:

    Sinun on käytettävä build-variantti, jonka build-konfiguraatiossa on debuggable true. Yleensä voit vain valita oletusarvoisen ”debug”-muunnoksen, joka sisältyy jokaiseen Android Studio -projektiin (vaikka se ei näy build.gradle-tiedostossa). Mutta jos määrittelet uusia build-tyyppejä, joiden pitäisi olla debuggable, sinun täytyy lisätä `debuggable true` build-tyyppiin:

    android { buildTypes { customDebugType { debuggable true ... } }}

    Tämä ominaisuus koskee myös moduuleja, joissa on C/C++-koodia. (Ominaisuutta jniDebuggable ei enää käytetä.)

    Jos sovelluksesi on riippuvainen kirjastomoduulista, jonka haluat myös debuggata, myös tämä kirjasto on pakattava debuggable true-ominaisuudella, jotta se säilyttää debuggaus-symbolinsa.Varmistaaksesi, että sovellusprojektisi debuggattavat variantit saavat kirjastomoduulin debuggattavissa olevan variantin, varmista, että julkaiset kirjastostasi myös muut kuin oletusarvoiset versiot.

Aloita debuggaus

Voit aloittaa debuggausistunnon seuraavasti:

  1. Aseta sovelluksen koodiin joitakin katkaisupisteitä.
  2. Valitse työkalupalkin kohdelaite-pudotusvalikosta laite, jolla sovelluksesi debugataan.

    Jos sinulla ei ole määritettyjä laitteita, sinun on joko kytkettävä laite USB:n kautta tai luotava AVD, jotta voit käyttää Android-emulaattoria.

  3. Klikkaa työkalupalkissa Debug .

    Jos näet valintaikkunan, jossa kysytään, haluatko ”vaihtaa Suorittamisesta Vianmääritykseen”, se tarkoittaa, että sovelluksesi on jo käynnissä laitteessa ja se käynnistyy uudelleen, jotta voit aloittaa vianmäärityksen. Jos haluat mieluummin pitää sovelluksen saman instanssin käynnissä, napsauta Cancel Debug ja liitä debuggeri sen sijaan käynnissä olevaan sovellukseen.

    Muussa tapauksessa Android Studio rakentaa APK:n, allekirjoittaa sen debug-avaimella, asentaa sen valitsemaasi laitteeseen ja ajaa sen. Jos lisäät projektiin C- ja C++-koodia, Android Studio käyttää myös LLDB-debuggeria Debug-ikkunassa natiivikoodin debuggaamiseksi.

  4. Jos Debug-ikkuna ei ole auki, valitse Näytä > Työkaluikkunat > Debug (tai napsauta Debug työkaluikkunapalkissa) ja napsauta sitten Debugger-välilehteä kuvan 1 mukaisesti.

    Kuva 1. Debuggeri-ikkuna, jossa näkyy nykyinen säie ja muuttujan oliopuu

Liitä debuggeri käynnissä olevaan sovellukseen

Jos sovellus on jo käynnissä laitteessa, voit aloittaa debuggauksen käynnistämättä sovellusta uudelleen seuraavasti:

  1. Klikkaa Attach debugger to Android process .
  2. Valitse Choose Process (Valitse prosessi) -valintaikkunassa prosessi, johon haluat liittää debuggerin.

    Jos käytät emulaattoria tai rootattua laitetta, voit näyttää kaikki prosessit valitsemalla Näytä kaikki prosessit.

    Use Android Debugger Settings from -pudotusvalikosta voit valita olemassa olevan run/debug-konfiguraation. (C- ja C++-koodin osalta voit käyttää LLDB-käynnistyskomentoja, LLDB:n kiinnittämisen jälkeisiä komentoja ja symbolihakemistoja uudelleen olemassa olevassa kokoonpanossa). Jos sinulla ei ole olemassa olevaa run/debug-konfiguraatiota, valitse Create New (Luo uusi). Tämä valinta ottaa käyttöön Debug Type -pudotusvalikon, josta voit valita eri debug-tyypin. Oletusarvoisesti Android Studio käyttää Automaattinen vianmääritystyyppi -vaihtoehtoa valitessaan parhaan mahdollisen vianmääritysvaihtoehdon sen perusteella, sisältääkö projektisi Java- vai C/C++-koodia.

  3. Klikkaa OK.

    Debugi-ikkuna tulee näkyviin.

Huomautus: Android Studion debuggeri ja roskienkerääjä ovat löyhästi integroituja. Android-virtuaalikone takaa, että kaikki objektit, joista debuggeri on tietoinen, kerätään roskakoriin vasta sen jälkeen, kun debuggeri katkaisee yhteyden. Tämä voi johtaa siihen, että objekteja kertyy ajan mittaan, kun debuggeri on yhteydessä. Jos esimerkiksi debuggeri havaitsee käynnissä olevan säikeen, siihen liittyvää Thread objektia ei kerätä roskakoriin ennen kuin debuggeri katkaisee yhteyden, vaikka säie olisikin päättynyt.

Vaihda debuggerityyppi

Koska Java/Kotlin-koodin ja C/C++-koodin debuggaamiseen tarvitaan eri debuggerityökaluja, Android Studion debuggerin avulla voit valita, mitä debuggerityyppiä haluat käyttää. Oletusarvoisesti Android Studi päättää käytettävän debuggerin sen perusteella, mitkä kielet se havaitsee projektissasi (automaattisen debuggerityypin kanssa). Voit kuitenkin valita virheenkorjaajan manuaalisesti virheenkorjauskonfiguraatiossa (napsauta Suorita > MuokkaaKonfiguraatiot) tai valintaikkunassa, joka tulee näkyviin, kun napsautat Suorita > Liitä virheenkorjaaja Androidprosessiin.

Käytettävissä olevat virheenkorjaustyypit ovat seuraavat:

Auto Valitse tämä virheenkorjaustyyppi, jos haluat, että Android Studio valitsee automaattisesti parhaan vaihtoehdon koodille, jota olet virheenkorjaamassa. Jos projektissasi on esimerkiksi C- tai C++-koodia, Android Studio käyttää automaattisesti Dual-vianmääritystyyppiä. Muussa tapauksessa Android Studio käyttää Java-vianmääritystyyppiä. Java Valitse tämä debug-tyyppi, jos haluat debugata vain Java- tai Kotlin-kielellä kirjoitettua koodia – Java-debuggeri ei huomioi natiivikoodiin asettamiasi pysäytyspisteitä tai kelloja. Native (käytettävissä vain C/C++-koodin kanssa) Valitse tämä debug-tyyppi, jos haluat käyttää koodisi debuggaamiseen vain LLDB:tä. Kun käytät tätä vianmääritystyyppiä, Java-vianmääritysohjelman istuntonäkymä ei ole käytettävissä. Oletusarvoisesti LLDB tarkastelee vain natiivikoodia eikä huomioi Java-koodin taukopisteitä. Jos haluat debugata myös Java-koodisi, sinun on vaihdettava joko Automaattinen tai Kaksoisdebug-tyyppiin.

Natiivinen virheenkorjaus toimii vain laitteissa, jotka täyttävät seuraavat vaatimukset:

  • Laite tukee run-as.

    Tarkistaaksesi, tukeeko laite run-as, suorita seuraava komento laitteeseen liitetyssä ADB-selaimessa:

    run-as your-package-name pwd

    Korvaa your-package-name sovelluksesi paketin nimellä. Jos laite tukee run-as, komennon pitäisi palata ilman virheitä.

  • Laitteessa on ptrace käytössä.

    Tarkistaaksesi, onko ptrace käytössä, suorita seuraava komento laitteeseen liitetyssä ADB-ulkopuolisessa komennossa:

    sysctl kernel.yama.ptrace_scope

    Jos ptrace on käytössä, komento tulostaa arvon 0 tai unknown key-virheilmoituksen. Jos ptrace ei ole käytössä, se tulostaa muun arvon kuin 0.

Dual (käytettävissä vain C/C++-koodin kanssa) Valitse tämä debug-tyyppi, jos haluat vaihtaa sekä Java- että natiivikoodin debuggauksen välillä. Android Studio liittää sekä Java-debuggerin että LLDB:n sovelluksen prosessiin, yhden Java-debuggerille ja yhden LLDB:lle, joten voit tarkastaa taukopisteitä sekä Java- että natiivikoodissa käynnistämättä sovellusta uudelleen tai muuttamatta debug-konfiguraatiota.

Kuvassa 2, huomaa kaksi välilehteä Debug-ikkunan otsikon oikealla puolella. Koska sovelluksessa on sekä Java- että C++-koodia, toinen välilehti on natiivikoodin debuggausta varten ja toinen Java-koodin debuggausta varten, kuten -java osoittaa.

Kuva 2. Välilehti natiivikoodin virheenkorjausta varten ja välilehti Java-koodin virheenkorjausta varten

Huomautus: Jos virheenkorjaat natiivikoodia, jonka kääntäjä on optimoinut, saatat saada seuraavan varoitusviestin: This function was compiled with optimizations enabled. Some debugger features may not be available. Kun käytät optimointilippuja, kuten -O-lippuja, kääntäjä tekee muutoksia käännettyyn koodiin, jotta se toimisi tehokkaammin. Tämä voi aiheuttaa sen, että debuggeri raportoi odottamatonta tai virheellistä tietoa, koska debuggerin on vaikea yhdistää optimoitu käännetty koodi takaisin alkuperäiseen lähdekoodiin. Tästä syystä kääntäjän optimoinnit kannattaa poistaa käytöstä, kun debuggaa natiivikoodia.

Käytä järjestelmälokia

Järjestelmäloki näyttää järjestelmäviestit sovelluksen debuggauksen aikana. Nämä viestit sisältävättietoa laitteessa käynnissä olevista sovelluksista. Jos haluat käyttää järjestelmälokia sovelluksen debuggaamiseen, varmista, että koodisi kirjoittaa lokiviestejä ja tulostaa poikkeusten stacktracea sovelluksen ollessa kehitysvaiheessa.

Kirjoita lokiviestejä koodissasi

Jos haluat kirjoittaa lokiviestejä koodissasi, käytä Log-luokkaa. Lokiviestit auttavat sinua ymmärtämään suorituksen kulkua keräämällä järjestelmän vianmääritystulosteet, kun olet vuorovaikutuksessa sovelluksesi kanssa. Lokiviestit voivat kertoa, mikä osa sovelluksestasi epäonnistui. Lisätietoja lokien kirjaamisesta on kohdassa Lokien kirjoittaminen ja tarkastelu.

Seuraavassa esimerkissä näytetään, miten voit lisätä lokiviestejä määrittääksesi, onko aiempi tilatieto käytettävissä, kun toimintosi käynnistyy:

Kehityksen aikana koodisi voi myös pyydystää poikkeuksia ja kirjoittaa pinojäljen järjestelmälokiin:

Huomautus: Poista virheenkorjauslokiviestit ja pinojäljen tulostuspyynnöt ohjelmakoodistasi silloin, kun sovelluksen julkaisu on valmis. Voit tehdä tämän asettamalla DEBUGflagin ja sijoittamalla debug-lokiviestit ehdollisten lausekkeiden sisälle.

Järjestelmälokin tarkastelu

Voit tarkastella ja suodattaa debug- ja muita järjestelmäviestejä Logcat-ikkunassa. Voit esimerkiksi nähdä viestejä, kun roskienkeräys tapahtuu, tai viestejä, jotka lisäät sovellukseesi Log-luokan avulla.

Jos haluat käyttää Logcatia, käynnistä debuggaus ja valitse Logcat-välilehti alimman työkalupalkin alareunasta kuvan 3 mukaisesti.

Kuva 3. Logcat-ikkuna suodatinasetuksineen

Kuvaus logcatista ja sen suodatusvaihtoehdoista on kohdassa Lokien kirjoittaminen ja tarkastelu Logcatilla.

Työskentely taukopisteiden kanssa

Android Studio tukee useita erityyppisiä taukopisteitä, jotka laukaisevat erilaisia virheenkorjaustoimenpiteitä. Yleisin tyyppi on rivin katkaisupiste, joka pysäyttää sovelluksen suorituksen tietylle koodiriville. Keskeytyksen aikana voit tutkia muuttujia, arvioida lausekkeita ja jatkaa suoritusta riveittäin selvittääksesi suoritusvirheiden syyt.

Lisätäksesi rivin katkaisupisteen toimi seuraavasti:

  1. Etsi koodirivi, jonka suorituksen haluat keskeyttää, ja napsauta sitten joko koodirivin vasenta reunaa tai aseta caret rivin kohdalle ja paina näppäinyhdistelmää Control+F8 (Mac-tietokoneessa Command+F8).
  2. Jos sovelluksesi on jo käynnissä, sinun ei tarvitse päivittää sitä taukopisteen lisäämiseksi – valitse vain Attach debugger to Android proccess . Muussa tapauksessa käynnistä virheenkorjaus napsauttamalla Debug .

Kuva 3. Punainen piste ilmestyy viivan viereen, kun asetat taukopisteen

Kun koodin suoritus saavuttaa taukopisteen,Android Studio keskeyttää sovelluksen suorituksen. Tämän jälkeen voit käyttää Debugger-välilehden työkaluja sovelluksen tilan tunnistamiseen:

  • Voidaksesi tutkia muuttujan oliopuuta, laajenna se Variables-näkymässä. Jos Muuttujat-näkymä ei ole näkyvissä, valitse Palauta muuttujanäkymä .

  • Voit arvioida lausekkeen nykyisessä suorituspisteessä napsauttamalla Arvioi lauseke .

  • Voit siirtyä koodin seuraavalle riville (syöttämättä metodia) napsauttamalla Step Over .

  • Siirtyäksesi ensimmäiselle riville metodikutsun sisällä napsauta Step Into .

  • Siirtyäksesi seuraavalle riville nykyisen metodin ulkopuolella napsauta Step Out .

  • Jatkaaksesi sovelluksen suorittamista normaalisti valitse Resume Program .

Jos projektissasi käytetään natiivikoodia, Auto debug-tyyppi liittää oletusarvoisesti sekä Java-debuggerin että LLDB:n sovellukseesi kahtena erillisenä prosessina, joten voit vaihtaa Java- ja C/C++-breakpointien tarkastamisen välillä käynnistämättä sovellusta uudelleen tai muuttamatta asetuksia.

Huomaa: Jotta Android Studio havaitsisi breakpointeja C- tai C++-koodissasi, sinun on käytettävä LLDB:tä tukevaa debugtityyppiä, kuten Auto-, natiivi- tai kaksoispalvelua. Voit muuttaa Android Studion käyttämää debug-tyyppiä muokkaamalla debug-asetuksia. Jos haluat lisätietoja eri debug-tyypeistä, lue kohta Muiden debug-tyyppien käyttäminen.

Kun Android Studio ottaa sovelluksen käyttöön kohdelaitteeseen, Debug-ikkuna avautuu välilehdellä tai debug-istuntonäkymällä kullekin debug-prosessille, kuten kuvassa 4 näkyy.

Kuva 4. Debug-ikkuna avautuu. Natiivikoodin virheenkorjaus LLDB:n avulla

  1. Android Studio siirtyy <oma-moduuli> -välilehdelle, kun LLDB-debuggeri kohtaa katkaisupisteen C/C++-koodissasi. Frames-, Variables- ja Watches-ruudut ovat myös käytettävissä, ja ne toimivat täsmälleen samalla tavalla kuin jos debuggaisit Java-koodia. Vaikka Threads-ruutu ei ole käytettävissä LLDB-istuntonäkymässä, voit käyttää sovelluksen prosesseja Frames-ruudun pudotusluettelon avulla. Saat lisätietoja näistä paneeleista kohdissa Ikkunakehysten debuggaaminen ja Muuttujien tarkastaminen.

    Huomautus: Kun tarkastat taukopistettä natiivikoodissasi, Android-järjestelmä keskeyttää virtuaalikoneen, joka suorittaa sovelluksesi Java-bytekoodia. Tämä tarkoittaa, että et voi olla vuorovaikutuksessa Java-debuggerin kanssa tai hakea mitään tilatietoja Java-debuggeri-istunnostasi, kun tarkastat natiivikoodin katkaisupistettä.

  2. Android Studio siirtyy <your-module>-java-välilehdelle, kun Java-debuggeri kohtaa taukopisteen Java-koodissasi.
  3. LLDB:llä debugattaessa voit LLDB-istuntonäkymän LLDB-päätteellä välittää komentoriviasetuksia LLDB:lle. Jos sinulla on tiettyjä komentoja, joita haluat LLDB:n suorittavan joka kerta, kun aloitat sovelluksen debuggauksen, joko juuri ennen tai juuri sen jälkeen, kun debuggeri kiinnittyy sovelluksen prosessiin, voit lisätä nämä komennot debug-konfiguraatioihisi.

C/C++-koodia debugattaessa voit myös asettaa erityyppisiä pysäytyspisteitä, joita kutsutaan tarkkailupisteiksi ja jotka voivat keskeyttää sovellusprosessisi, kun sovelluksesi on vuorovaikutuksessa tietyn muistilohkon kanssa. Jos haluat lisätietoja, lue osio tarkkailupisteiden lisäämisestä.

Taukopisteiden tarkasteleminen ja määrittäminen

Voit tarkastella kaikkia taukopisteitä ja määrittää taukopisteiden asetuksia napsauttamalla Tarkastele taukopisteitä Debugi-ikkunan vasemmassa reunassa. Taukopisteet-ikkuna tulee näkyviin kuvan 5 mukaisesti.

Kuva 5. Taukopisteet-ikkuna. Breakpoints-ikkunassa luetellaan kaikki nykyiset taukopisteet ja se sisältää käyttäytymisasetukset kullekin

Breakpoints-ikkunassa voit ottaa käyttöön tai poistaa käytöstä jokaisen taukopisteen vasemmalla olevasta luettelosta. Jos taukopiste on poistettu käytöstä, Android Studio ei pysäytä sovellusta, kun se osuu kyseiseen taukopisteeseen. Valitse taukopiste luettelosta määrittääksesi sen asetukset. Voit määrittää taukopisteen ensin pois käytöstä ja antaa järjestelmän ottaa sen käyttöön sen jälkeen, kun toiseen taukopisteeseen on osuttu. Voit myös määrittää, poistetaanko taukopiste käytöstä sen jälkeen, kun siihen on osuttu. Voit asettaa pysäytyspisteen mille tahansa poikkeukselle valitsemalla pysäytyspisteiden luettelosta Poikkeuksen pysäytyspisteet.

Vianmääritysikkunan kehykset

Vianmääritysikkunan Kehykset-ruudussa voit tarkastella pinokehystä, joka aiheutti nykyisen pysäytyspisteen osumisen. Näin voit navigoida ja tutkia pinokehystä sekä tarkastaa Android-sovelluksen säikeiden luettelon. Voit valita säikeen käyttämällä säikeenvalitsimen pudotusvalikkoa ja tarkastella sen pinokehystä. Kehyksen elementtejä napsauttamalla voit avata lähteen editorissa. Voit myös mukauttaa säikeen esitystapaa ja viedä pinokehyksen, kuten Ikkunakehykset-oppaassa käsitellään.

Muuttujien tarkastelu

Debugger-ikkunan Muuttujat-ruudussa voit tarkastaa muuttujia, kun järjestelmä pysäyttää sovelluksen katkaisupisteeseen ja valitset kehyksen Kehykset-ruudusta. Muuttujat-ruudussa voit myös arvioida ad-hoc-lausekkeita käyttäen staattisia metodeja ja/tai muuttujia, jotka ovat käytettävissä valitussa kehyksessä.

Tarkkailut-ruudussa on samankaltainen toiminto, paitsi että Tarkkailut-ruudussa lisätyt lausekkeet säilyvät debuggausistuntojen välillä. Tarkkailuja kannattaa lisätä muuttujille ja kentille, joita käytetään usein tai jotka tarjoavat nykyisen debuggausistunnon kannalta hyödyllisen tilan. Muuttujat- ja Tarkkailut-paneelit näkyvät kuvan 5 mukaisesti.

Voit lisätä muuttujan tai lausekkeen Tarkkailut-luetteloon seuraavasti:

  1. Aloita debuggaus.
  2. Napsauta Watches-ruudussa Add .
  3. Kirjoita avautuvaan tekstiruutuun sen muuttujan tai lausekkeen nimi, jota haluat tarkkailla, ja paina sitten Enter-näppäintä.

Voit poistaa elementin Watches-luettelosta valitsemalla elementin ja napsauttamalla sitten Remove .

Voit järjestää Watches-luettelon elementit uudelleen valitsemalla elementin ja napsauttamalla sitten Up tai Down .

Kuva 6. Elementin järjestys. Debugger-ikkunan Muuttujat- ja Tarkkailut-ruudut

Tarkkailupisteiden lisääminen

C/C++-koodia debugattaessa voit asettaa erityyppisiä pysäytyspisteitä, niin sanottuja tarkkailupisteitä, jotka voivat keskeyttää sovelluksen prosessin, kun sovellus on vuorovaikutuksessa tietyn muistilohkon kanssa. Jos esimerkiksi asetat kaksi osoitinta muistilohkolle ja määrität sille vahtipisteen, jommankumman osoittimen käyttäminen kyseiseen muistilohkoon laukaisee vahtipisteen.

Android Studiossa voit luoda vahtipisteen ajon aikana valitsemalla tietyn muuttujan, mutta LLDB määrittää vahtipisteen vain sille muistilohkolle, jonka järjestelmä varaa kyseiselle muuttujalle, ei itse muuttujaa. Tämä eroaa muuttujan lisäämisestä Watches-ikkunaan, jolloin voit tarkkailla muuttujan arvoa, mutta et voi keskeyttää sovellusprosessia, kun järjestelmä lukee tai muuttaa muuttujan arvoa muistissa.

Huomautus: Kun sovellusprosessi poistuu funktiosta ja järjestelmä poistaa sen paikalliset muuttujat muistista, sinun on määritettävä uudelleen kaikki kyseisille muuttujille luodut tarkkailupisteet.

Tarkkailupisteen asettaminen edellyttää seuraavia vaatimuksia:

  • Fyysinen kohdelaitteesi tai emulaattorisi käyttää x86- tai x86_64-suorittimia. Jos laitteesi käyttää ARM-suoritinta, sinun on kohdistettava muuttujan osoitteen raja muistissa joko 4 tavuun 32-bittisissä prosessoreissa tai 8 tavuun 64-bittisissä prosessoreissa. Voit kohdistaa muuttujan natiivikoodissasi määrittämällä __attribute__((aligned(num_bytes))) muuttujan hidastuksessa, kuten alla näkyy:
    // For a 64-bit ARM processorint my_counter __attribute__((aligned(8)));
  • Olet jo määrittänyt kolme tai vähemmän vahtipisteitä. Android Studio tukee vain enintään neljää kellopistettä x86- tai x86_64-kohdelaitteissa. Muut laitteet saattavat tukea vähemmän kellopisteitä.

Huomautus: Kun debuggaa sovellusta 32-bittisellä ARM ABI:llä, tarkkailupisteen lisääminen tai koodin sisällä olevien muuttujien ylittäminen niiden arvojen tutkimiseksi voi aiheuttaa kaatumisen. Väistötoimenpiteenä voit debugata käyttämällä 64-bittisiä ARM-, x86- tai x86_64-binäärejä. Tämä ongelma korjataan tulevassa Android Studio -julkaisussa.

Jos täytät edellä mainitut vaatimukset, voit lisätä tarkkailupisteen seuraavasti:

  1. Kun sovelluksesi on keskeytettynä katkaisupisteessä, siirry LLDB-istuntonäkymän Muuttujat-ruutuun.
  2. Napsauta hiiren kakkospainikkeella muuttujaa, joka vie muistilohkon, jota haluat seurata, ja valitse Add Watchpoint. Näyttöön tulee valintaikkuna tarkkailupisteen määrittämistä varten, kuten kuvassa 7 näkyy.

    Kuvio 7. Tarkkailupisteen lisääminen muistissa olevalle muuttujalle

  3. Konfiguroi tarkkailupiste seuraavilla vaihtoehdoilla:
    • Käytössä: Voit poistaa tämän vaihtoehdon valinnan, jos haluat, että Android Studio jättää watchpointin toistaiseksi huomiotta. Android Studio tallentaa silti watchpointin, jotta voit käyttää sitä myöhemmin debug-istunnossa.
    • Keskeytä: Oletusarvoisesti Android-järjestelmä keskeyttää sovellusprosessisi, kun se käyttää muistilohkoa, jonka olet määrittänyt tarkkailupisteelle. Voit poistaa tämän vaihtoehdon valinnan, jos et halua tätä käyttäytymistä – tämä paljastaa lisävaihtoehtoja, joilla voit mukauttaa käyttäytymistä, kun järjestelmä on vuorovaikutuksessa tarkkailupisteesi kanssa: Kirjaudu viesti konsoliin ja Poista, kun osuu.
    • Access Type: Valitse, laukaiseeko sovelluksesi tarkkailupisteesi, kun se yrittää lukea tai kirjoittaa muistilohkoon, jonka järjestelmä varaa muuttujalle. Jos haluat käynnistää tarkkailupisteesi joko lukemisen tai kirjoittamisen yhteydessä, valitse Any.
  4. Klikkaa Valmis.

Voit tarkastella kaikkia tarkkailupisteitäsi ja määrittää tarkkailupisteiden asetuksia napsauttamalla Debug-ikkunan vasemmassa reunassa View Breakpoints . Taukopisteet-valintaikkuna tulee näkyviin kuvan 8 mukaisesti.

Kuva 8. Taukopisteet-valintaikkuna. Breakpoints (Taukopisteet) -valintaikkuna listaa nykyiset tarkkailupisteesi ja sisältää käyttäytymisasetukset kullekin

Kun olet lisännyt tarkkailupisteen, jatka sovelluksen prosessia napsauttamalla Resume Program (Jatka ohjelmaa) Debug-ikkunan vasemmalla puolella. Jos sovelluksesi yrittää käyttää muistilohkoa, jolle olet asettanut tarkkailupisteen, Android-järjestelmä keskeyttää oletusarvoisesti sovelluksen prosessin ja tarkkailupisteen kuvake tulee näkyviin sen koodirivin viereen, jonka sovelluksesi on viimeksi suorittanut, kuten kuvassa 9 näkyy.

Kuva 9. Sovelluksen tarkkailupiste. Android Studio näyttää koodirivin, jonka sovelluksesi suorittaa juuri ennen tarkkailupisteen käynnistämistä

Resurssiarvojen näyttömuodon tarkastelu ja muuttaminen

Vianmääritystilassa voit tarkastella resurssiarvoja ja valita eri näyttömuodon Java-koodin muuttujille. Kun Muuttujat-välilehti on näkyvissä ja kehys valittuna, toimi seuraavasti:

  1. Klikkaa muuttujien luettelossa hiiren kakkospainikkeella missä tahansa resurssirivillä avataksesi pudotusluettelon.
  2. Valitse pudotusluettelossa Näkymä as ja valitse haluamasi muoto.

    Käytettävissä olevat muodot riippuvat valitsemasi resurssin tietotyypistä. Saatat nähdä yhden tai useamman seuraavista vaihtoehdoista:

    • Luokka: Näyttää luokan määritelmän.
    • toString: Näytä merkkijonomuoto.
    • Object: Näytä objektin (luokan instanssin) määritelmä.
    • Array: Näytä array-muodossa.
    • Aikaleima: Näyttää päivämäärän ja kellonajan seuraavasti: vvvv-mm-tv hh:mm:ss.
    • Auto: Android Studio valitsee parhaan muodon tietotyypin perusteella.
    • Binary: Näyttää binääriarvon käyttämällä nollia ja ykkösiä.
    • MeasureSpec: Arvo, joka siirretään vanhemmalta valitulle lapselle. Katso MeasureSpec.
    • Hex: Näyttö heksadesimaaliarvona.
    • Primitiivinen: Näyttö numeerisena arvona käyttäen primitiivistä tietotyyppiä.
    • Integer: Näyttää numeerisena arvona käyttäen tyyppiä Integer.

Voit luoda mukautetun muodon (tietotyypin renderöijä) seuraavasti:

Vastaa

Sähköpostiosoitettasi ei julkaista.