Chia sẻ mẫu tham chiếu theo dõi sai

Tác giả:Leviyuan, Ngày: 2020-01-28 20:39:09
Tags:

Cách sử dụng: Đầu tiên, hãy tham khảo thư viện mẫu này. Trong mỗi tập tin kịch bản, thêm $.fileLineMark ((mainbar, 35) Các tham số đầu tiên: tên tập tin Các tham số thứ hai: số dòng mã trong tập tin Và đảm bảo rằng dòng mã này được thực hiện trước khi phát hiện ra lỗi. Cuối cùng trong mã chính sách thêm main = $.tryfunc ((main) để đảm bảo tất cả các cuộc gọi đều qua try

Khi báo cáo chính sách sai, sẽ tự động có một dòng chữ màu đỏ chỉ ra ở đâu và ở đâu trong một tập tin.

Nguyên tắc: Cách quản lý tải mã js là tải tất cả các mã js, bao gồm thư viện lớp, vào một tập tin lớn; tìm vị trí của mỗi tập tin trong tập tin lớn, và khi báo lỗi cuối cùng, ngược lại tương ứng, tức là biết số dòng báo lỗi cụ thể.

img


var fileStartLine = []
$.fileLineMark = function(file, line) {
    try{a=a+1}catch(ex){
        var markline = parseInt(ex.stack.split('\n')[3].split('(__FILE__:')[1].split(')')[0])
        fileStartLine.push([file, markline-line])
        fileStartLine.sort(function(a, b){
            return b[1] - a[1]
        })
    }
}

$.tryfunc = function(func) {
    return function(a,b,c,d,e,f,g,h,i,j,k,l,m,n) {
        try {
            return func(a,b,c,d,e,f,g,h,i,j,k,l,m,n)
        } catch(ex) {
            if (ex.message == "execution timeout") {
                Log("忽略机器人停止指令")
                throw ex
                return
            }

            var line = parseInt(ex.stack.split('\n')[2].split('(__FILE__:')[1].split(')')[0])
            for (var ii = 0; ii < fileStartLine.length; ii++) {
                if (line > fileStartLine[ii][1]) {
                    Log("catch error at " + fileStartLine[ii][0] + ":" + (line-fileStartLine[ii][1])+"#ff0000")
                    break
                }
            }

            throw ex
        }
    }
}

function onTick() {

}

function main() {
    $.fileLineMark("main", 41)
    onTick = $.tryfunc(onTick)
    
    while(true){
        onTick()
        Sleep(1000)
    }
}


Thêm nữa

Cỏ nhỏĐiều này thật thú vị.

Cỏ nhỏCó thể làm được, nhưng không nghĩ đến điều đó.

LeviyuanHa ha, ngược lại, suy nghĩ về những gì bạn đang làm bên trong -- không hoàn toàn chính xác, nhưng có ích, wow.