Debugging kebijakan JavaScript di browser Chrome

Penulis:Mimpi kecil, Dibuat: 2022-06-22 14:23:26, Diperbarui: 2023-09-18 20:24:01

img

Debugging kebijakan JavaScript di browser Chrome

Untuk kebijakan debugging dalam sistem retesting, biasanya hanya digunakanLog()Fungsi tersebut. DEBUG ini sangat tidak efisien dan sulit bagi pemula yang tidak memiliki banyak pengalaman dalam pengujian program.JavaScriptDalam bahasa Indonesia, bahasa yang digunakan adalah bahasa Indonesia.ChromeBrowser memiliki dukungan yang lebih baik. Anda dapat melakukan debugging titik putus, debugging langkah tunggal, pemantauan nilai variabel, pemantauan ekspresi, dll.JavascriptDEBUG pada saat kebijakan bahasa ditelusuri kembali. Perhatikan, pada FMZ hanyaJavascriptStrategi bahasa mendukung metode debugging ini.

Di platform FMZ:debuggerPerintah

Masukkan kode kebijakan bahasa JavaScript di FMZdebuggerInstruksi yang memungkinkan program untuk dihentikan saat diulang.

Kami menggunakan kode strategi pengujian berikut:

/*backtest
start: 2022-03-21 09:00:00
end: 2022-06-21 15:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

function main() {
    var n = 1 
    while (true) {
        var t = exchange.GetTicker()
        debugger
        var r = exchange.GetRecords()
        if (n == 1) {
            // 下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性,属性名区分大小写
            var id = exchange.Buy(t.buy, 0.1)    
            var orderBuy = exchange.GetOrder(id)
        }
        Sleep(500)
    }
}

Kode konfigurasi dari retest

/*backtest
start: 2022-03-21 09:00:00
end: 2022-06-21 15:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

Anda dapat melihat bahwa pertukaran yang kami tambahkan saat review adalah Binance (Binance) dengan konfigurasi seperti gambar:

img

Jika kita terus melihat kode strategi, kita bisa melihat bahwavar t = exchange.GetTicker()Dan di bawah kalimat ini, kita menulis:debuggerPerintah, sama dengan menekan titik putus di sini, dan program akan berhenti sampai ke titik ini.debuggerUntuk melakukan hal ini, tidak dianjurkan, hanya dengan mengetik satu titik di suatu lokasi, dan titik berikutnya dapat diatur di fungsi debugging DevTools browser Anda.

Anda harus membuka browser Chrome terlebih dahulu.DevToolsPeriksa ulang, yang diatur dalam kode kebijakandebuggerJika tidak, mereka tidak akan bisa bekerja.debuggerKebijakan ini tidak dapat dihentikan dan tidak dapat dihentikan pada titik putus.DevToolsSetelah mengulangi kebijakan, program kebijakan akan dihentikan pada pengaturan pertama.debuggerTempatnya,debuggerAnda juga dapat mengatur kode strategi dalam ruang lingkup global.

Kita buka, browser ChromeDevToolsAda dua cara untuk menggunakan alat ini:

  • Pertama, kita mengklik kanan untuk membuka menu pop-up.

    img

    Jika kita mengklik "Check" maka akan muncul antarmuka DevTools.

  • 2. Gunakan tombol jalan pintas

    Anda juga bisa membuka dengan menekan tombol tombol cepat.Command+Option+I (Mac)atauControl+Shift+I(Windows、Linux)Buka.DevTools

Buka.DevToolsSetelah itu, berikut ini:

img

Antarmuka DEBUG di browser untuk kebijakan bahasa JavaScript

Kemudian dalam tes di atas, ketika kita mengklik tombol "Start Retest", kebijakan retest akan muncul karena telah diatur dalam kode.debuggerPerintah, kebijakan di posisi yang sesuai untuk berhenti dan menunggu. Pemutaran kembali seperti terjebak mati, seperti gambar di bawah:

img

Anda bisa lihat di strategi.debuggerTanda lokasi pemutusan, seluruh program hanya melakukan n assignment sebagai 1, t assignment sebagaiGetTickerData yang dikembalikan oleh fungsi. Pada gambar di atas, Anda dapat melihat nilai variabel tertentu dalam kotak merah, sehingga mudah untuk melihat nilai variabel saat kebijakan berjalan.

Debug titik putus secara manual

Kita bisa mengklik baris di sebelah kiri kode untuk menambahkan titik putus.

img

Mengklik "resume script execution" untuk menghidupkan kembali eksekusi skrip, program akan berjalan ke titik putus berikutnya, dan jika tidak ada titik putus atau program memiliki kesalahan yang menyebabkan kelainan, uji ulang akan berakhir.

img

Ada beberapa tombol lain yang dapat dilakukan: melewatkan fungsi berikutnya, pergi ke panggilan fungsi berikutnya, melewatkan panggilan fungsi saat ini, melakukan langkah tunggal, mengabaikan semua titik putus, dll.

img

Berikan kode uji coba ini DEBUG

img

Pada saat ini, ketika kita terus mengklik tombol "resume script execution" untuk melanjutkan eksekusi, kebijakan akan mengalami kesalahan yang luar biasa, mengakhiri uji coba, dan mencetak pesan kesalahan yang luar biasa.

main:17:31 - TypeError: Cannot convert "undefined" to double

Ini adalah kesalahan yang sering dilakukan oleh pemula, dengan menulis nama sifat struktur tanpa membedakan ukuran dan ukuran.

var id = exchange.Buy(t.buy, 0.1)  //  下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性。

导致传入exchange.Buy函数的价格是一个undefined变量,引起程序异常,回测结束。

Ketika program berhenti di titik putus, baris kode ini tidak dieksekusi. Kami terus mengklik tombol "step into next function call".

img

跳转到exchange.Buy函数调用中。

img

Lihat harga sebagai variabel yang tidak didefinisikan.

Dengan menggunakan metode di atas, Anda dapat dengan mudah menemukan program BUG langkah demi langkah. Kesalahan yang sering dilakukan oleh banyak pemula: seperti mengakses indeks array yang melintasi batas, mengutip variabel yang tidak didefinisikan, kesalahan penulisan ekspresi, dll. Dengan cara ini, Anda dapat dengan mudah melakukan DEBUG pada program.


Berkaitan

Lebih banyak

FmzeroRuang tidur, masih bisa seperti ini, 666