2009-10-13 41 views
5

Tôi đang sử dụng Trình phân tích cú pháp nhật ký của Microsoft trong Dịch vụ Windows là gì. Chương trình hoạt động trong một trang web thông thường nhưng khi tôi đặt mã trong một cửa sổ dịch vụ nó không hoạt động. Tôi đặt Breakponts trong dịch vụ windows nhưng khi tôi chạy mã chương trình không dừng lại ở điểm ngắt. Vì vậy, thông qua xử lý sự cố của tôi, tôi đã thu hẹp vấn đề xuống phần mềm Log Parser và LINQ. Vì vậy, hoặc LINQ hoặc phần mềm phân tích cú pháp đăng nhập đang tạo ra sự cố. Các bạn có ý kiến ​​gì không?Cách tốt nhất để gỡ lỗi chương trình Dịch vụ Windows trong Visual Studio 2008

Trả lời

2

Tôi đã thực hiện nhiều cách này trong quá khứ tùy thuộc vào cách chương trình chạy. Tôi nghĩ rằng cách dễ nhất được thực hiện với một chỉ thị tiền xử lý #DEBUG xung quanh Debugger.Launch() theo cách đó khi bạn đã xây dựng dự án đã tối ưu hóa cuộc gọi Debugger.Launch() sẽ không được biên dịch vào trong assembly. Một trong những cách chúng tôi cũng đã làm được thực hiện nhiệm vụ này là với System.Windows.Forms.MessageBox.Show ("đính kèm") cho phép chúng tôi tự đính kèm vào trình gỡ rối bất cứ khi nào "đính kèm" hộp thoại đã được hiển thị.

Cách cuối cùng mà tôi không thích là thay đổi hành vi dịch vụ của bạn dựa trên các thông số dòng lệnh được truyền vào. Về cơ bản chọn KHÔNG bắt đầu các dịch vụ bằng ServiceBase.Run bất cứ khi nào một tham số cụ thể được kích hoạt, nhưng gọi một lớp đóng gói hành vi/chức năng chính của dịch vụ.

+1

Nhập điểm cuối cùng - Tôi tin rằng bạn cũng có thể kiểm tra 'Environment.UserInteractive' cho mục này. –

2

Bạn có muốn gỡ lỗi phương pháp OnStart không? Nếu vậy, bạn có thể sử dụng phương thức System.Diagnostics.Debugger.Launch() hoặc System.Diagnostics.Debugger.Break() để có cơ hội đính kèm trình gỡ lỗi trong khi phương thức khởi động đang chạy, nếu không bạn sẽ luôn đến muộn bằng cách đính kèm trình gỡ rối.

2

Tôi nghĩ rằng đề nghị của mèo béo gắn trình gỡ lỗi của bạn vào quy trình dịch vụ có vẻ đúng. Nếu vẫn không hiệu quả, hãy thử sử dụng Debug.WriteLineDebugView.

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