4
tập trung vào
1076
Người theo dõi

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Được tạo ra trong: 2022-06-22 14:23:26, cập nhật trên: 2023-09-18 20:24:01
comments   1
hits   1284

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Đối với các chiến lược gỡ lỗi trong hệ thống kiểm tra ngược, thường chỉLog()chức năng. Hiệu quả của loại DEBUG này rất thấp và rất khó thực hiện đối với những người mới bắt đầu, ít kinh nghiệm trong việc kiểm thử chương trình. vìJavaScriptChiến lược gỡ lỗi ngôn ngữChromeTrình duyệt được hỗ trợ tốt hơn. Nó có thể thực hiện gỡ lỗi điểm dừng, gỡ lỗi một bước, giám sát giá trị biến, giám sát biểu thức, v.v. trong quá trình kiểm tra ngược. Sau đây chúng ta hãy tìm hiểu cách sử dụng phương pháp này để kiểm soát FMZ.JavascriptDEBUG khi kiểm tra ngược các chiến lược trong ngôn ngữ. Lưu ý rằng chỉ trên FMZJavascriptChính sách của ngôn ngữ hỗ trợ cách tiếp cận gỡ lỗi này.

Trên nền tảng FMZdebuggerchỉ dẫn

Chèn vào mã chính sách của ngôn ngữ JavaScript trên FMZdebuggerHướng dẫn có thể làm gián đoạn quá trình thực thi chương trình trong quá trình kiểm tra ngược.

Chúng tôi sử dụng mã chiến lược thử nghiệm sau:

/*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)
    }
}

Từ mã cấu hình kiểm tra ngược

/*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"}]
*/

Bạn có thể thấy rằng sàn giao dịch mà chúng tôi đã thêm trong quá trình kiểm tra ngược là Binance spot và cấu hình được hiển thị như trong ảnh chụp màn hình:

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Tiếp tục xem xét mã chiến lược, chúng ta có thể thấy rằngvar t = exchange.GetTicker()Dưới câu này chúng tôi đã viếtdebuggerHướng dẫn này tương đương với việc thiết lập điểm dừng ở đây và chương trình sẽ dừng khi đạt đến vị trí này. Nhiềudebugger, nhưng không nên làm như vậy. Chỉ cần đặt điểm dừng tại một vị trí nhất định. Các điểm dừng tiếp theo có thể được đặt trong chức năng gỡ lỗi DevTools của trình duyệt.

Trước tiên bạn cần mở trình duyệt ChromeDevToolsSau đó thực hiện kiểm tra ngược, bộ mã chiến lượcdebuggersẽ có hiệu lực, nếu khôngdebuggerNó sẽ bị bỏ qua và chương trình chiến lược kiểm thử ngược không thể bị gián đoạn hoặc dừng lại tại điểm dừng. MởDevToolsSau khi kiểm tra lại chiến lược, chương trình chiến lược sẽ bị gián đoạn ở lần đặt đầu tiêndebuggerVị trí,debuggerCũng có thể được thiết lập trong phạm vi toàn cầu của mã chính sách.

Chúng tôi mở trình duyệt ChromeDevToolsCó hai loại công cụ:

  • 1. Chúng ta nhấp chuột phải vào trang để mở menu bật lên

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Khi chúng ta nhấp vào “Kiểm tra”, giao diện DevTools sẽ được hiển thị.

  • 2. Sử dụng phím tắt

Bạn cũng có thể sử dụng phím tắt để mở nó.Command+Option+I (Mac)hoặcControl+Shift+I(Windows、Linux)Mở DevTools

MởDevToolsSau đó, như thể hiện trong hình:

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Giao diện gỡ lỗi trong trình duyệt của chiến lược ngôn ngữ JavaScript

Sau khi thực hiện thử nghiệm trên, khi chúng ta nhấp vào nút “Bắt đầu kiểm tra ngược” để kiểm tra ngược chiến lược, do cài đặt trong mãdebuggerHướng dẫn, chiến lược ngắt và chờ ở vị trí tương ứng. Backtest dường như bị kẹt, như hiển thị bên dưới:

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Có thể thấy rằng trong chiến lượcdebuggerĐánh dấu vị trí ngắt. Toàn bộ chương trình chỉ thực hiện n được gán cho 1 và t được gán choGetTickerDữ liệu thị trường được trả về bởi hàm. Trong hộp màu đỏ ở hình trên, bạn có thể thấy các giá trị biến cụ thể, giúp bạn dễ dàng quan sát giá trị của nhiều biến khác nhau khi chiến lược đang chạy.

Đặt điểm dừng thủ công để gỡ lỗi

Chúng ta có thể nhấp vào số dòng ở bên trái của mã để thêm điểm dừng.

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Nhấp vào “tiếp tục thực thi tập lệnh” để tiếp tục thực thi tập lệnh. Chương trình sẽ chạy đến điểm dừng tiếp theo. Nếu không có điểm dừng hoặc chương trình có lỗi và gây ra ngoại lệ, thì quá trình kiểm tra ngược sẽ kết thúc.

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Ngoài ra còn có các nút có thể được sử dụng để: bỏ qua hàm tiếp theo, chuyển sang lệnh gọi hàm tiếp theo, thoát khỏi lệnh gọi hàm hiện tại, bước đơn, bỏ qua tất cả các điểm dừng, v.v.

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Đưa mã kiểm tra này DEBUG

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Lúc này, khi chúng ta tiếp tục nhấp vào nút “tiếp tục thực thi tập lệnh” để tiếp tục thực thi, chương trình chiến lược sẽ có ngoại lệ, quá trình kiểm tra ngược kết thúc và thông báo lỗi ngoại lệ được in ra.

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

Đây là một lỗi thường gặp ở người mới bắt đầu, họ không phân biệt được chữ hoa và chữ thường trong tên thuộc tính cấu trúc.

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

Kết quả là giá được chuyển vào sàn giao dịch. Hàm mua là một biến không xác định, gây ra lỗi chương trình và quá trình kiểm tra ngược kết thúc.

Khi chương trình dừng tại điểm dừng, dòng mã này sẽ không được thực thi. Chúng ta tiếp tục nhấp vào nút “chuyển sang lệnh gọi hàm tiếp theo”.

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Nhảy tới chức năng gọi lệnh mua.

Kiểm tra ngược chiến lược JavaScript gỡ lỗi trong trình duyệt Chrome DevTools

Xem giá là một biến không xác định.

Sử dụng phương pháp trên, bạn có thể dễ dàng tìm ra lỗi chương trình theo từng bước. Nhiều lỗi mà người mới thường mắc phải: ví dụ, truy cập ngoài giới hạn vào chỉ mục mảng, tham chiếu đến các biến chưa xác định, viết biểu thức không đúng, v.v. Bằng cách này, việc gỡ lỗi chương trình trở nên dễ dàng.