Troubleshooting
Lập trình trên On-Chain có thể có nhiều điểm tương đồng với lập trình nhúng trong thực tế vì cả hai đều hoạt động trong một môi trường thực thi hạn chế và cần phải tối ưu hóa để hoạt động hiệu quả. Môi trường thực thi trên chuỗi blockchain thường có các hạn chế về tài nguyên, bao gồm bộ nhớ và thời gian thực thi, do đó các chương trình trên chuỗi cần được tối ưu hóa để tiết kiệm tài nguyên và đảm bảo hoạt động ổn định.
Aiken cố gắng cung cấp cho các nhà phát triển các công cụ bổ sung và khả năng sửa lỗi để hỗ trợ quá trình phát triển và triển khai các ứng dụng trên chuỗi. Các tính năng và công cụ này có thể bao gồm:
-
Các công cụ phát triển tích hợp để phân tích mã, gỡ lỗi và kiểm tra mã trước khi triển khai lên chuỗi.
-
Các thư viện chuẩn để thực hiện các chức năng phổ biến và giảm bớt công việc lập trình lặp đi lặp lại.
-
Các hướng dẫn và tài liệu phong phú để hỗ trợ các nhà phát triển hiểu rõ hơn về cách phát triển ứng dụng trên chuỗi và xử lý các vấn đề phát sinh.
Như vậy, Aiken
cố gắng cung cấp một môi trường phát triển tổng thể và tối ưu để giúp các nhà phát triển xây dựng và triển khai các ứng dụng blockchain
một cách hiệu quả và ổn định trên chuỗi.
Traces
Trong Aiken, dấu vết (traces) được coi như một loại thông điệp tường trình, là các thông tin ghi lại vào thời điểm cụ thể trong quá trình thực thi của chương trình. Bạn có thể thêm dấu vết vào biểu thức cấp cao nhất trong Aiken bằng từ khóa trace. Dưới đây là một ví dụ minh họa về cách sử dụng dấu vết trong Aiken. Trace được ghi lại máy ảo tại chính thời điểm đó:
fn is_even(n: Int) -> Bool {
trace "is_even"
n % 2 == 0
}
fn is_odd(n: Int) -> Bool {
trace "is_odd"
n % 2 != 0
}
Trong ví dụ này, khi hàm is_even
hoặc is_odd
được gọi, một dấu vết được ghi lại với thông điệp tương ứng “is_even” hoặc “is_odd”. Để thu thập dấu vết, bạn có thể chạy thử nghiệm thông qua aiken check
hoặc mô phỏng giao dịch bằng aiken tx simulate. Trong cả hai trường hợp, các dấu vết thu được trong quá trình thực thi sẽ được hiển thị trên màn hình.
aiken check
Compiling aiken-lang/stdlib 1.7.0 (D:Workspaceaiken-tutorialproject