2011-11-22 29 views
7

Tôi muốn biết liệu tôi có thể sử dụng trình biên dịch Mono như một dịch vụ hay không (xem herehere) trong bối cảnh gỡ lỗi để truy vấn/sửa đổi/trực quan hóa các đối tượng trong thời gian chạy trong trình gỡ lỗi. Hiện tại, mỗi this SO post Roslyn CTP không hỗ trợ tính năng này.Trình biên dịch Mono có thể được sử dụng trong một bối cảnh gỡ rối không?

+0

này nghe có vẻ hơi giống như những gì bạn có thể làm với vỏ REPL (csharp.exe hoặc gsharp.exe) – IanNorton

+0

Không chắc tôi làm theo - Tôi muốn để có thể đặt một breakpoint trong mã của tôi trong khi gỡ rối (ví dụ như với Visual Studio) và thực hiện các câu lệnh kiểm tra trong vòng lặp REPL. Điều này có thể được thực hiện bằng cách nào đó với csharp.exe hoặc gsharp.exe? –

Trả lời

2

Có, điều đó hoàn toàn có thể. Tôi không thể cho bạn biết chi tiết chính xác về cách thực hiện điều này, nhưng hãy xem MonoDevelop thực sự thực hiện ý tưởng của bạn kể từ v2.8 (hoặc có thể sớm hơn). Trong MonoDevelop, bạn có sẵn một REPL Pad, cho phép bạn nhập mã C# trong cùng một bối cảnh mà ứng dụng của bạn dừng lại vì một điểm ngắt. Tôi đã đính kèm một Ảnh chụp màn hình MD đơn giản trong chế độ xem gỡ lỗi và mở khóa REPL. Vì MD là mã nguồn mở, bạn có thể kiểm tra các nguồn đã được triển khai thực hiện như thế nào và loại bỏ các phần mà bạn cần.

Screenshot of MonoDevelop using Direct/REPL evaluation window while debugging

+0

Tuyệt vời, không có ý tưởng! Cảm ơn, David –

+0

Btw, đã có một số cuộc thảo luận từ các anh chàng mono rằng nó sẽ là tuyệt vời để đính kèm REPL cho bất kỳ quá trình mono nhất định (mà nên có thể bởi vì softdebugger mono được nối vào máy ảo). IIRC đã có một số công việc được thực hiện về điều này. Có lẽ bạn có thể bắt kịp và hoàn thành các nguồn, đó sẽ là chính xác những gì bạn cần và bạn sẽ đóng góp cho mono;) – Dyna

0

Tôi nghĩ rằng nó nên khả thi vì Mono Soft Debugger là một phần của thời gian chạy Mono, do đó bạn có thể sử dụng "Debugger Agent":

Các đại lý debugger là một mô-đun bên trong thời gian chạy mono trong đó cung cấp dịch vụ gỡ lỗi để chương trình khách hàng.

Vì vậy, một giải pháp thay thế có thể đang cố gắng kết nối với Trình gỡ lỗi mềm Mono trong trình biên dịch của bạn dưới dạng dịch vụ (chạy trên thời gian chạy đơn).

Khi Trình gỡ lỗi đơn giản Mono được sử dụng trong MonoDevelop IDE bạn cũng có thể điều tra xem IDE này có thể được sử dụng cho những gì bạn đang tìm kiếm hay không.

Các vấn đề liên quan