Đối với tôi, vì M không có trình gỡ rối tích hợp để nói, tôi lãng phí 50% thời gian của tôi chỉ trong gỡ lỗi, có thể đã được lưu nếu có trình gỡ lỗi. 50% mã phát triển của tôi là báo cáo In, vì không có các báo cáo này, tôi sẽ bị mất khi tìm thấy lỗi xuất phát từ đâu. (điều này cũng tồi tệ, vì quá nhiều thông điệp in trong mã, làm cho khó có thể xem thuật toán đôi khi, nó bị cản trở, nhưng không thể xóa nó, vì tôi có thể cần nó sau này).
Tôi thấy thật tuyệt vời khi một công cụ tính toán mạnh mẽ và linh hoạt như M, vẫn có môi trường phát triển tương đối kém hơn. Khi tôi đang sử dụng Matlab, tôi mất vài giây để tìm lỗi ở đâu, sử dụng trình gỡ rối.
Ai đó có thể nói sử dụng Bàn làm việc để gỡ lỗi. Tôi đã cố gắng sử dụng để gỡ lỗi một bản demo Manipulate, và tôi không thể tìm ra nó. Quá phức tạp để sử dụng. M cần một trình xây dựng trình gỡ rối đơn giản dễ sử dụng (trong chính sổ ghi chép, không phải là một chương trình riêng), và với các số dòng!
Ok, Với việc giới thiệu ở trên :), đây là những gì tôi làm bản thân mình để đáp lại câu hỏi của bạn:
có mức độ khác nhau của các thông điệp debug. mức độ thô và mức chi tiết. Mức độ thô chỉ in một thông báo khi nó vào một hàm và khi nó tồn tại chức năng.
Tôi có một nút trên giao diện người dùng để sử dụng để bật/tắt gỡ lỗi (nếu bạn đang làm chương trình dựa trên giao diện người dùng, nếu không nó sẽ có trong mã).
Sử dụng chức năng gỡ lỗi riêng biệt, nơi thông báo gỡ lỗi đi qua trước khi được in. Trong đó, bạn có thể thêm dấu thời gian cho mỗi thư và như vậy trước khi in (cũng có thể kiểm soát nếu bạn muốn thư đi tới tệp văn bản, từ một nơi). Phần còn lại của mã của bạn, chỉ cần gọi hàm gỡ lỗi này với thông báo cần in. Tôi in tất cả mọi thứ ngay bây giờ để bàn giao tiếp, không cho máy tính xách tay hiện tại.
Mỗi thông báo gỡ lỗi có tên hàm gọi lúc bắt đầu.
Nếu bạn muốn kiểm soát gỡ lỗi ở cấp mô-đun, điều tôi làm, chỉ cần tạo cờ gỡ lỗi cục bộ bên trong Mô-đun và bật/tắt mỗi lần tôi muốn gỡ lỗi mô-đun cụ thể đó. Cờ gỡ lỗi cục bộ này đảm nhận cài đặt cờ gỡ lỗi toàn cục. Bằng cách này, tôi có thể gỡ lỗi chỉ một mô-đun nếu tôi muốn, và không phải phần còn lại của mã.
Có nhiều cách khác để tùy chỉnh tất cả điều này. Nhưng tôi thấy rằng nếu tôi dành nhiều thời gian sớm hơn để tạo ra một hệ thống thông báo gỡ lỗi tốt, nó sẽ giúp phân bổ lỗi khi cần.
Dưới đây là một số liên kết hữu ích
http://reference.wolfram.com/mathematica/guide/TuningAndDebugging.html
workbench debugger (nếu bạn có thể tìm cách sử dụng để gỡ lỗi thao tác và Dynamics, xin vui lòng cho tôi biết)
http://www.wolfram.com/products/workbench/features/debug.html
Trong v.8, cũng có 'Assert' tương tự ở chỗ nó in thông điệp về kiểm tra thất bại, và có thể được tắt –
@ Verbeia Vâng, đúng vậy ... Tôi chỉ nghĩ rằng hai câu hỏi rất gần nhau sẽ có lợi khi họ sáp nhập và có tất cả câu trả lời ở cùng một nơi. Cho dù đó là một trong những sáp nhập vào này hoặc ngược lại nó không quan trọng ... – Szabolcs
@ Szabolcs thấy tin nhắn cho bạn trong trò chuyện – Verbeia