Unit 7 / 11

Nyahpepijat dan Analisis Ranap dengan Kepintaran Buatan

Keuntungan:

  • Keupayaan untuk mengecilkan kemungkinan punca dengan cepat dengan memberikan rekod ranap sistem (jejak tindanan) kepada kecerdasan buatan dengan kod dan konteks senario yang berkaitan
  • Keupayaan untuk menyelesaikan punca punca secara kekal daripada mengesahkan diagnosis AI sebagai hipotesis dalam kod dan menguji serta menyenyapkan gejala
  • Melindungi privasi semasa menyahpepijat dengan menutup data peribadi dalam rekod ranap dan log

Setiap aplikasi memberikan ralat; Apa yang membezakan pembangun yang baik ialah seberapa cepat mereka mencari dan membetulkan pepijat. Penyahpepijatan mudah alih — mencari dan membetulkan punca masalah — amat sukar kerana ralat berlaku pada peranti pengguna, dalam persekitaran yang anda tidak dapat lihat. Selalunya, semua yang anda ada hanyalah log ranap (log ranap / jejak tindanan — pecahan teknikal ke mana aplikasi itu pergi apabila ia ranap). AI sangat berkuasa dalam membaca rekod samar ini, menyenaraikan kemungkinan penyebab dan mencadangkan penyelesaian. Dalam unit ini, kami akan belajar cara menggunakan AI sebagai "detektif pepijat" tetapi memberi anda tanggungjawab untuk mengesahkan diagnosis akhir dan membetulkan.

Membaca log ranap: Tempat AI bersinar paling terang

Log ranap ialah teks yang panjang dan menakutkan; pemaju yang tidak berpengalaman tidak akan tahu di mana hendak mencari. AI menghuraikan teks ini dalam beberapa saat: pada baris mana ia ranap, pengecualian mana yang dilemparkan, apakah sebabnya. Ralat mudah alih biasa adalah jelas dan AI ​​mengiktirafnya dengan cepat: NullPointerException (cuba mengakses nilai nol), IndexOutOfBoundsException (mengakses elemen senarai yang tidak wujud) pada Android, EXC_BAD_ACCESS (mengakses memori yang dibebaskan) pada iOS, tanpa diduga ditemui nil (memaksa tiada pilihan).

Jenis ranap mudah alih yang paling biasa dan punca lazimnya adalah seperti berikut:

Ralat (pengecualian)

Platform

sebab biasa

NullPointerException

Android

Mengakses nilai nol

IndexOutOfBoundsException

Android

Mengakses elemen senarai yang tidak wujud

tak disangka jumpa nil

iOS

Paksa membuka balutan nil pilihan (!)

EXC_BAD_ACCESS

iOS

Mengakses memori yang dibebaskan

ANR/beku

Android

Pemprosesan panjang/berat pada benang utama

Aliran penyahpepijatan langkah demi langkah:

  1. Kumpul rekod. Susun log ranap, mesej ralat dan langkah untuk menghasilkan semula jika boleh.
  2. Berikan konteks AI. Beritahu saya bukan sahaja ralat, tetapi sekeping kod yang berkaitan dan apa yang ia ranap lakukan.
  3. Tanya sebab yang mungkin. "Beritahu saya 3 punca yang paling mungkin dan cara mengesahkan setiap satu."
  4. Sahkan. Sahkan sebab yang dicadangkan dalam kod dan ujian; Jangan betulkan dengan meneka.
  5. Betulkan dan uji lagi. Semak sama ada ralat itu benar-benar hilang dan tiada ralat baharu dihasilkan.
Petua: Apabila memberikan log ranap sistem kepada AI, sertakan coretan kod yang berkaitan juga. Hanya dengan jejak tindanan AI membuat ramalan umum; Apabila anda melihat kod tersebut, kebarangkalian mencari baris yang tepat dan punca sebenar meningkat dengan banyak. Konteks menentukan kualiti diagnosis.

Perangkap data peribadi

Log ranap dan log selalunya mengandungi data pengguna: e-mel, ID pengguna, lokasi, malah kandungan borang. Menampal rekod ini ke dalam AI seperti membocorkan data peribadi kepada pihak ketiga dan merupakan pelanggaran KVKK / GDPR. Kosongkan (topeng) kawasan peribadi sebelum menyerahkan rakaman. Juga, berhati-hati untuk tidak menulis data peribadi ke log aplikasi anda dari awal; Log yang baik menerangkan masalah tetapi tidak mendedahkan identiti.

Awas: Pembaikan yang dicadangkan oleh AI mungkin "menyenyapkan pepijat" tetapi mungkin tidak menyelesaikan punca utama. Sebagai contoh, membalut NullPointerException dengan semakan batal akan menghentikan ranap sistem, tetapi jika anda tidak mengetahui sebab nilainya batal, ralat logik sebenar akan diteruskan. Rawat penyakit, bukan gejala.

Analisis punca punca

Matlamat penyahpepijatan profesional bukan untuk menyenyapkan ralat tetapi untuk mencari punca. Saya bertanya kepada AI "mengapa ini mungkin batal, di manakah ia mungkin hilang dalam aliran data?" bertanya, "bagaimana saya mendiamkan ini?" Ia jauh lebih berharga daripada bertanya. Setelah punca utama ditemui, berpuluh-puluh variasi ralat yang sama diselesaikan sekaligus. AI mahir dalam penaakulan rantaian ini: ikuti data dari input ke output dan minta ia memikirkan di mana ia rosak.

tiga kes mini

Kes 1 — 2 jam bekerja dalam 10 minit. Seorang pembangun menghabiskan 2 jam mencari pepijat yang hanya ranap pada model Samsung tertentu. Berikan log ranap (membersihkan kawasan peribadi) kepada AI; YZ berkata bahawa ralat itu menunjukkan limpahan memori yang berlaku dengan resolusi kamera yang berbeza bagi peranti itu. Dengan petunjuk itu, sebabnya ditemui dalam masa 10 minit. AI mempercepatkan carian, manusia mengesahkan penyelesaiannya.

Kes 2 — Pepijat yang disenyapkan kembali. Satu pasukan menyenyapkan kemalangan berulang dengan menggunakan cadangan AI untuk mencuba menangkapnya. Ranap itu berhenti, tetapi pengguna mula mengadu bahawa "data tidak disimpan"; kerana masalah sebenar (sambungan pangkalan data) masih ada, ia baru sahaja menjadi tidak kelihatan. Setelah punca utama ditemui, kedua-dua ranap dan kehilangan data telah diselesaikan. Pengajaran: mendiamkan diri tidak menyelesaikan.

Kes 3 — Data bocor dalam log. Audit mendapati nama penuh dan nombor telefon pengguna telah ditulis ke dalam log ranap aplikasi. Pembangun secara rutin menampal log ini ke dalam AI dan membetulkan pepijat; Jadi data peribadi telah keluar selama berbulan-bulan. Log telah ditutup dan prosesnya telah diperbetulkan. Pelajaran: kerahsiaan terpakai walaupun semasa menyahpepijat.

Gesaan lemah / Gesaan kuat

Gesaan lemah: "Mengapa ralat ini berlaku? [jejak tindanan]"

Gesaan kuat: "Ranap sistem ini berlaku dalam apl Android saya. Konteks:- Semasa melakukan: pengguna menambah ke troli daripada butiran produk- Hanya pada sesetengah peranti, model RAM rendah- Kod berkaitan: [ViewModel dan Bahagian Repositori]- Log ranap (data peribadi dibersihkan): [jejak tindanan]Senaraikan 3 punca yang paling berkemungkinan. Bagi setiap satu:1) Bagaimana saya mengesahkan di mana anda tetap, 2. tidak pasti."

Templat yang boleh disalin

Templat analisis ranap sistem:"Analisis ranap sistem berikut. Konteks: [apa yang anda lakukan, peranti/versi mana]. Kod yang berkaitan: [kod]. Log ranap sistem (data peribadi dikosongkan): [jejak]. Berikan 3 punca yang berkemungkinan besar dan pengesahan + pembetulan kekal untuk setiap satu. Tandakan juga penyelesaian yang menyenyapkan gejala."

Templat punca akar: "Nilai ini datang [null/false] tanpa diduga. Ikuti aliran data dari input ke titik ini: di manakah ia boleh hilang atau rosak? Beritahu saya di mana saya harus menyemak pada setiap peringkat. [kod]"

Templat bacaan log: "Terjemahkan output log ini: apakah peristiwa yang berlaku mengikut urutan, di manakah kelainan, apakah langkah sihat terakhir sebelum ralat? [log — data peribadi dibersihkan]"

Templat pengeluaran semula: "Apakah langkah, keadaan peranti dan data yang harus saya cuba untuk menghasilkan semula ralat ini dengan pasti? Senaraikan keadaan yang boleh mencetuskan ralat mengikut urutan kebarangkalian. [penerangan]"

Kesilapan biasa

  • Memberi jejak tindanan tanpa konteks. Tanpa kod dan senario yang berkaitan, AI membuat ramalan umum.
  • Menampal data peribadi ke dalam AI bersama-sama dengan log. Pelanggaran kerahsiaan; topeng dahulu.
  • Senyapkan gejala. Menyembunyikan ranap dengan cuba-tangkap meninggalkan masalah akar dan mencipta masalah baharu.
  • Menggunakan cadangan pertama tanpa mengesahkannya. Diagnosis AI adalah hipotesis; Sahkan dalam kod.
  • Cuba untuk menghasilkan semula dalam emulator. Sesetengah ralat hanya muncul pada peranti/keadaan sebenar.
  • Tidak menguji semula selepas pembetulan. Pembaikan itu mungkin telah memecahkan sesuatu yang lain; Semak regresi.

Secara ringkasnya

Salah satu bidang di mana AI cemerlang ialah membaca log ranap dan menyelesaikan kemungkinan punca; Kualiti diagnosis bertambah baik apabila konteks diberikan. Tetapi diagnosis dan pembetulan akhir adalah milik manusia: cadangan AI adalah hipotesis, disahkan dalam kod dan ujian. Matlamatnya bukan untuk membungkam gejala tetapi untuk menyelesaikan punca; Ralat yang disenyapkan biasanya kembali dalam bentuk lain. Log ranap sistem mungkin mengandungi data peribadi; Topeng sebelum memberikannya kepada AI dan jangan tulis data peribadi dalam log anda dari awal.

Tugasan permohonan

Ambil log ranap sistem yang anda miliki (atau sampel yang anda hasilkan daripada AI), tutup sebarang data peribadi/khusus di dalamnya dan berikannya kepada AI dengan "Templat analisis ranap". Bezakan yang mana punca senarai AI adalah pembetulan sebenar dan yang hanya menyenyapkan. Gunakan pembetulan kekal yang anda pilih dan sahkan bahawa ralat telah hilang dan tiada masalah baharu timbul.

senarai semak

  • [ ] Saya telah memberikan log ranap dengan kod dan konteks senario yang berkaitan
  • [ ] Saya menyembunyikan data peribadi/tersendiri dalam log
  • [ ] Saya meminta AI untuk punca dan pembetulan kekal, bukan membungkam
  • [ ] Saya mengesahkan diagnosis dalam kod dan ujian, saya tidak menggunakannya secara membuta tuli
  • [ ] Selepas pembetulan, saya menguji bahawa ralat telah hilang dan tiada regresi
  • [ ] Saya menyemak bahawa permohonan saya tidak menulis data peribadi dalam lognya