Debugging Kod Asynchronous di Chrome Devtools
Aktifkan jejak timbunan async dalam tetapan DevTools untuk mengekalkan timbunan panggilan merentasi operasi async seperti janji dan menunggu, membolehkan anda melihat rantaian pelaksanaan penuh. 2. Tetapkan titik putus secara langsung dalam fungsi async, .then ()/. Catch () panggil balik, dan menunggu ekspresi untuk memeriksa pembolehubah dan melihat nilai janji yang diselesaikan. 3. Gunakan "Jeda pada Pengecualian" dan membolehkan "Jeda pada Pengecualian Tertangkap" untuk menangkap penolakan janji dan kesilapan dalam kod async yang mungkin gagal dengan senyap. 4. Masukkan konsol.trace () dalam panggilan balik async untuk log stack panggilan async dan aliran pelaksanaan surih tanpa berhenti. 5. Memahami perbezaan gelung peristiwa antara tugas (contohnya, setTimeout) dan microtasks (contohnya, janji. Di samping itu, gunakan titik pemecatan pendengar acara untuk menjeda peristiwa DOM atau rangkaian yang mencetuskan kod async, membantu mengesan asal -usul operasi tak segerak. Mengaktifkan susunan async, berhenti pada pengecualian, dan menggunakan konsol.trace () dengan berkesan merangkumi kebanyakan senario debugging async dunia dalam JavaScript.
Debugging Kod Asynchronous dalam JavaScript boleh menjadi rumit -callbacks, janji, async/menunggu, dan gelung acara menjadikan sukar untuk mengesan aliran pelaksanaan. Chrome Devtools menawarkan ciri -ciri yang kuat untuk membantu anda debug kod async dengan berkesan. Inilah cara menggunakannya.

1. Gunakan tumpukan panggilan dan jejak timbunan async
Apabila menyahpepijat fungsi async, timbunan panggilan biasa hanya menunjukkan konteks segerak semasa, yang sering pecah di sempadan gelung peristiwa (misalnya, selepas Promise.then()
). Ini menjadikan sukar untuk mengetahui di mana operasi async berasal.
Dayakan jejak timbunan async:

- Buka Chrome Devtools.
- Pergi ke Tetapan (Ikon Gear) → Keutamaan → Sumber .
- Semak "Async Stack Traces" .
Sebaik sahaja diaktifkan, Chrome mengekalkan timbunan panggilan merentasi operasi async seperti setTimeout
, Promise.then
, dan await
. Anda akan melihat gambaran yang lebih lengkap tentang bagaimana kod anda mendapat titik putus.
Contoh:
Jika anda mempunyaifetchData()
→fetch()
→.then(handleResult)
→handleResult()
, dengan susunan async diaktifkan, mengklik kehandleResult
akan menunjukkan rantaian penuh, bukan hanya panggilan balik.then()
.![]()
2. Tetapkan titik putus dalam janji dan fungsi async
Anda boleh menyahpepijat kod async seperti kod break -break Code -shink secara langsung di:
- badan fungsi
async
-
.then()
dan.catch()
Callbacks - Kod di dalam Ekspresi
await
Petua:
- Gunakan titik pemecahan line-of-code dengan mengklik nombor baris dalam tab Sumber .
- Apabila pelaksanaan mencecah titik putus di dalam fungsi
async
, kata kunciawait
akan menunjukkan nilai yang diselesaikan sebaik sahaja janji selesai. - Bergegas ke atas pembolehubah untuk memeriksa keadaan semasa mereka -walaupun janji -janji menunjukkan status mereka (
pending
,fulfilled
,rejected
) dan nilai.
3. Gunakan ciri "Jeda pada Pengecualian"
Penolakan janji atau kesilapan yang tidak diingini dalam panggilan balik async boleh menjadi sukar untuk ditangkap kerana mereka tidak selalu mencetuskan berhenti segera.
Dayakan pengecualian pintar berhenti:
- Dalam tab Sumber DevTools, klik butang Jeda pada Butang Pengecualian (?).
- Semak "Jeda pada Pengecualian Tertangkap" jika diperlukan.
- Chrome kini akan menjeda penolakan janji yang tidak diingini (dengan
--unhandled-rejections=strict
atau dalam versi moden).
Ini membantu anda menangkap kesilapan dalam
.then()
panggilan balik atauawait
ekspresi yang mungkin gagal dengan senyap.
4. Gunakan konsol.trace () untuk debugging cepat
Jika anda tidak menggunakan titik putus, taburkan console.trace()
dalam panggilan balik async anda untuk log timbunan panggilan async semasa ke konsol.
fungsi async langkah1 () { langkah2 (); } fungsi async step2 () { menunggu janji.Resolve (); Console.Trace ("Di manakah kita sampai di sini?"); }
Ini mengeluarkan jejak yang menunjukkan laluan async -walaupun merentasi microtasks -membantu apabila anda tidak boleh atau tidak mahu menjeda pelaksanaan.
5. Memahami tugas vs microtask dalam gelung acara
Chrome Devtools tidak membezakan secara visual antara tugas -tugas (contohnya, setTimeout
) dan microtasks (contohnya, Promise.then
.
- Tugas : Acara UI,
setTimeout
,setInterval
- Microtasks
MutationObserver
Promise.then
queueMicrotask
Microtasks dijalankan sebelum tugas seterusnya, yang boleh menyebabkan kelewatan atau kekeliruan yang tidak dijangka dalam masa debugging.
Petua: Gunakan
performance.now()
atauconsole.time()
untuk mengukur masa sebenar apabila menyahpepijat keadaan perlumbaan.
Bonus: Gunakan titik putus pendengar acara
Kadang -kadang kod async dicetuskan oleh peristiwa DOM atau respons rangkaian.
Dalam tab Sumber :
- Memperluaskan titik pemecatan pendengar (di sebelah kanan).
- Dayakan titik putus untuk acara seperti
click
,fetch
, atautimeout
.
Ini membolehkan anda berhenti sejenak apabila operasi async dijadualkan, membantu mengesan kembali ke tindakan pengguna atau panggilan API.
Debugging kod async di Chrome Devtools tidak perlu menyakitkan. Dengan jejak stack async diaktifkan, titik putus pintar, dan pengendalian pengecualian yang betul, anda boleh mengikuti aliran seperti itu segerak. Kuncinya adalah mengetahui di mana hendak melihat -dan menghidupkan tetapan yang betul.
Pada asasnya, membolehkan susunan async, jeda pada pengecualian, dan gunakan console.trace()
apabila diperlukan. Itu meliputi senario debugging dunia yang paling nyata.
Atas ialah kandungan terperinci Debugging Kod Asynchronous di Chrome Devtools. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Penyahpepijatan berbilang benang boleh menggunakan GDB: 1. Dayakan penyusunan maklumat penyahpepijatan; 2. Tetapkan titik putus; Kebuntuan penyahpepijatan kes sebenar: 1. Gunakan threadapplyalbt untuk mencetak tindanan;

Bagaimana cara menggunakan LeakSanitizer untuk menyahpepijat kebocoran memori C++? Pasang LeakSanitizer. Dayakan LeakSanitizer melalui bendera kompilasi. Jalankan aplikasi dan analisis laporan LeakSanitizer. Kenal pasti jenis peruntukan memori dan lokasi peruntukan. Betulkan kebocoran memori dan pastikan semua memori yang diperuntukkan secara dinamik dikeluarkan.

Ujian dan penyahpepijatan serentak Ujian dan penyahpepijatan serentak dalam pengaturcaraan serentak Java adalah penting dan teknik berikut tersedia: Ujian serentak: Ujian unit: Asingkan dan uji satu tugas serentak. Ujian integrasi: menguji interaksi antara pelbagai tugas serentak. Ujian beban: Nilaikan prestasi dan kebolehskalaan aplikasi di bawah beban berat. Penyahpepijatan Konkurensi: Titik Putus: Jeda pelaksanaan utas dan periksa pembolehubah atau jalankan kod. Pengelogan: Rekod peristiwa dan status urutan. Jejak tindanan: Kenal pasti sumber pengecualian. Alat visualisasi: Pantau aktiviti benang dan penggunaan sumber.

Artikel ini memperkenalkan pintasan untuk penyahpepijatan dan analisis fungsi Go, termasuk: dlv penyahpepijat terbina dalam, yang digunakan untuk menjeda pelaksanaan, menyemak pembolehubah dan menetapkan titik putus. Log, gunakan pakej log untuk merakam mesej dan melihatnya semasa penyahpepijatan. Alat analisis prestasi pprof menjana graf panggilan dan menganalisis prestasi, serta menggunakan gotoolpprof untuk menganalisis data. Kes praktikal: Analisis kebocoran memori melalui pprof dan hasilkan graf panggilan untuk memaparkan fungsi yang menyebabkan kebocoran.

Alat untuk menyahpepijat kod tak segerak PHP termasuk: Psalm: alat analisis statik yang menemui kemungkinan ralat. ParallelLint: Alat yang memeriksa kod tak segerak dan memberikan cadangan. Xdebug: Sambungan untuk menyahpepijat aplikasi PHP dengan mendayakan sesi dan melangkah melalui kod. Petua lain termasuk menggunakan pengelogan, penegasan, kod berjalan secara setempat dan menulis ujian unit.

Teknik berikut tersedia untuk menyahpepijat fungsi rekursif: Semak jejak tindananTetapkan titik nyahpepijatSemak jika kes asas dilaksanakan dengan betulKira bilangan panggilan rekursifVisualkan tindanan rekursif

Ralat penyahpepijatan PHP biasa termasuk: Ralat sintaks: Semak sintaks kod untuk memastikan tiada ralat. Pembolehubah tidak ditentukan: Sebelum menggunakan pembolehubah, pastikan ia dimulakan dan diberikan nilai. Koma bertitik tiada: Tambahkan koma bertitik pada semua blok kod. Fungsi tidak ditentukan: Semak sama ada nama fungsi dieja dengan betul dan pastikan fail atau sambungan PHP yang betul dimuatkan.

Fungsi penyahpepijatan C++ yang mengandungi pengendalian pengecualian menggunakan titik putus titik pengecualian untuk mengenal pasti lokasi pengecualian. Gunakan perintah tangkapan dalam gdb untuk mencetak maklumat pengecualian dan surih tindanan. Gunakan logger pengecualian untuk menangkap dan menganalisis pengecualian, termasuk mesej, surih tindanan dan nilai pembolehubah.
