Rexx - Gỡ lỗi
Gỡ lỗi là một tính năng quan trọng trong bất kỳ ngôn ngữ lập trình nào. Nó giúp nhà phát triển chẩn đoán lỗi, tìm ra nguyên nhân gốc rễ và sau đó giải quyết chúng cho phù hợp. Trong Rexx, tiện ích theo dõi được sử dụng để gỡ lỗi. Lệnh theo dõi có thể được thực hiện theo 2 cách, một là chế độ hàng loạt và hai là chế độ tương tác. Hãy xem cách thực hiện cả hai tùy chọn.
Theo dõi ở chế độ hàng loạt
Lệnh trace được sử dụng để cung cấp mức độ chi tiết của từng lệnh Rexx được thực thi.
Cú pháp chung của câu lệnh theo dõi được hiển thị như sau:
Cú pháp
trace [setting]
Nơi cài đặt có thể là bất kỳ ai trong số các tùy chọn sau -
A - Theo dõi tất cả các lệnh.
C - Chỉ theo dõi các lệnh chủ được gửi đến hệ điều hành.
E - Chỉ theo dõi các lệnh máy chủ được gửi đến hệ điều hành dẫn đến lỗi.
F - Chỉ theo dõi các lệnh máy chủ được gửi đến hệ điều hành đã dẫn đến lỗi.
I - Điều này cung cấp khả năng truy tìm mức trung gian của các lệnh Rexx.
L - Tùy chọn này là nếu bạn muốn gắn nhãn theo dõi khi nó xảy ra.
N - Đây là tùy chọn mặc định mà không có dấu vết xảy ra.
Hãy xem một ví dụ về lệnh trace.
Thí dụ
/* Main program */
trace A
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then signal msg
say 'This is a whole number'
return 0
msg :
say ' This is an incorrect number '
Kết quả của chương trình trên sẽ như sau:
5 *-* n = 100.45 if datatype( n, wholenumber ) then signal msg
7 *-* say 'This is a whole number
This is a whole number
8 *-* return 0
Từ đầu ra, bạn có thể thấy rằng một dấu vết bổ sung đã được thêm vào đầu ra của chương trình. Những điều sau đây có thể được lưu ý về đầu ra:
Số dòng cùng với câu lệnh được thực thi được thêm vào đầu ra theo dõi.
Mỗi dòng được thực thi được hiển thị trong đầu ra theo dõi.
Chức năng theo dõi
Theo dõi cũng có thể được kích hoạt với sự trợ giúp của chức năng theo dõi. Cú pháp chung và ví dụ được hiển thị bên dưới.
Cú pháp
trace()
Hàm trên trả về mức theo dõi hiện tại.
Thông số
không ai
Giá trị trả lại
Hàm trên cung cấp mức theo dõi hiện tại.
Thí dụ
/* Main program */
say trace()
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then signal msg
say 'This is a whole number'
return 0
msg :
say 'This is an incorrect number '
Kết quả của chương trình trên sẽ như sau.
N
This is an incorrect number
Dòng đầu tiên của N biểu thị rằng dấu vết được đặt thành Bình thường.
Đặt giá trị theo dõi
Mức theo dõi có thể được thiết lập bằng chức năng theo dõi. Cú pháp chung và ví dụ được hiển thị bên dưới.
Cú pháp
trace(travel_level)
Thông số
trace_level - Điều này tương tự như các tùy chọn có sẵn để thiết lập mức theo dõi.
Giá trị trả lại
Hàm trên cung cấp mức theo dõi hiện tại.
Thí dụ
/* Main program */
say trace()
current_trace = trace('A')
say current_trace
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then
signal msg say 'This is a whole number'
return 0
msg :
say ' This is an incorrect number '
Kết quả của chương trình trên sẽ như sau:
N
4 *-* say current_trace
N
6 *-* n = 100.45
7 *-* if \ datatype( n, wholenumber ) then
8 *-* signal msg
12 *-* say 'This is an incorrect number'
'This is an incorrect number'
Theo dõi tương tác
Theo dõi tương tác là trong đó, truy tìm được thực hiện khi chương trình chạy. Cũng giống như trong một IDE chẳng hạn như Visual Studio cho .Net, trong đó bạn có thể thêm các điểm ngắt và xem cách mỗi câu lệnh thực thi, tương tự ở đây, bạn cũng có thể xem chương trình khi mỗi dòng mã chạy.
Cú pháp chung như sau:
Cú pháp
trace ?options
Trong đó, các tùy chọn giống nhau đối với lệnh theo dõi như hình dưới đây.
A - Theo dõi tất cả các lệnh
C - Chỉ theo dõi các lệnh chủ được gửi đến hệ điều hành.
E - Chỉ theo dõi các lệnh máy chủ được gửi đến hệ điều hành dẫn đến lỗi.
F - Chỉ theo dõi các lệnh máy chủ được gửi đến hệ điều hành đã dẫn đến lỗi.
I - Điều này cung cấp khả năng truy tìm mức trung gian của các lệnh Rexx.
L - Tùy chọn này là nếu bạn muốn gắn nhãn theo dõi khi nó xảy ra.
N - Đây là tùy chọn mặc định mà không có dấu vết xảy ra.
Hãy xem một ví dụ về việc triển khai theo dõi tích cực.
Thí dụ
/* Main program */
trace ?A
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then
signal msg
say 'This is a whole number'
return 0
msg : say 'This is an incorrect number'
Kết quả của chương trình trên sẽ như trong chương trình sau. Dấu vết sẽ dừng lại ở mỗi dòng mã; thì bạn cần nhấn nút Enter để chuyển sang dòng mã tiếp theo.
This is an incorrect number
+++ "LINUX COMMAND /home/cg/root/5798511/main.rex"
5 *-* n = 100.45 if datatype( n, wholenumber ) then
+++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++
6 *-* signal msg
10 *-* msg :
10 *-* say 'This is an incorrect number'