Kotlin Multiplatform Academy · leksjon

Feilsøk freezes og krasj i tråder

Finn årsaken til de klassiske fallgruvene i Kotlin/Native.

Leksjon 4 av 413 trinn

Feilsøk freezes og krasj i tråder er en gratis leksjon i Kotlin Multiplatform Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Kotlin Multiplatform Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Kotlin Multiplatform Academy inneholder totalt 4 leksjoner.

Når tråder går galt

Trådingsfeil viser seg som frysinger eller plutselige krasj. Når du kjenner de vanligste årsakene, kan du diagnostisere dem raskt.

Symptomet med et frosset UI

En app som slutter å svare, har vanligvis en blokkert hovedtråd. Noe tungt kjører der det bare skal utføres UI-arbeid.

Finn det blokkerende kallet

Se etter synkrone nettverks- eller diskkall på hovedtråden. Flytt dem inn i en coroutine på en bakgrunnsdispatcher.

withContext(Dispatchers.Default) { slowCall() }

UI-krasj fra feil tråd

På iOS kan oppdatering av UI utenfor hovedtråden føre til krasj. Løsningen er å bytte tilbake med Dispatchers.Main før du berører visninger.

withContext(Dispatchers.Main) { render(data) }

Les det opprinnelige stack-sporet

Kotlin/Native-krasj skriver ut et stack-spor i Xcode-loggene. De øverste rammene peker vanligvis direkte på det aktuelle kallet.

Den gamle frysefeilen

I eldre oppsett kan du se InvalidMutabilityException. Løsningen er å oppgradere til den nye minnehåndteringen, som fjerner frysing.

Se opp for deadlocks

En deadlock viser seg som en permanent hengning uten krasj. Det betyr ofte at to tråder tar to låser i motsatt rekkefølge.

Legg til logging ved grensene

Logg navnet på tråden når arbeidet går mellom dispatchere. Når du ser hvor kjøringen faktisk skjer, blir feilen raskt tydelig.

println("on: " + currentThreadName())

Gjenskap feilen pålitelig

Uregelmessige krasj krever belastning. Kjør den mistenkte banen i mange coroutines i en test til feilen oppstår hver gang.

Stol på strukturert samtidighet

Ved å avgrense arbeidet unngår du lekke coroutines som krasjer senere. Når du avbryter et scope, stoppes alle underordnede coroutines ryddig og i tide.

scope.cancel()

Lag en sjekkliste for feilsøking

Still tre spørsmål: Er hovedtråden blokkert, berøres UI utenfor hovedtråden, og deles tilstanden på en utrygg måte? Det dekker de fleste krasj. 🔍

Rask sjekk

En siste sjekk av feilsøking av tråder.

Oppsummering

Du har lært å oppdage blokkerte hovedtråder, UI-krasj utenfor hovedtråden og deadlocks, og deretter løse dem med riktig dispatcher. 🎉

Gratis å komme i gang

Lær deg Kotlin med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Feilsøk freezes og krasj i tråder» gratis?

Ja – hele teksten i «Feilsøk freezes og krasj i tråder» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Kotlin Multiplatform Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Kotlin Multiplatform Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Feilsøk freezes og krasj i tråder»?

Finn årsaken til de klassiske fallgruvene i Kotlin/Native. Du øver på Kotlin Multiplatform Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Kotlin Multiplatform Academy?

Ingen tidligere erfaring er nødvendig. Kotlin Multiplatform Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Feilsøk freezes og krasj i tråder»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Kotlin Multiplatform Academy-leksjonen?

Ja. Alle Kotlin Multiplatform Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Den nye minnehåndteringen forklart
  2. Hovedtråd kontra bakgrunn på iOS
  3. Muterbar tilstand og race conditions
  4. Feilsøk freezes og krasj i tråder
← Tilbake til Kotlin Multiplatform Academy