2011-11-09 26 views
9

Tôi có một kịch bản PowerShell và tôi tải một dll qua [Reflection.Assembly] :: tảiGỡ lỗi C# dll khi được nạp vào quá trình của powershell? Thậm chí có thể không?

tôi muốn đặt brakepoints vào mã nguồn của dll đó, thêm đồng hồ, vv

Gắn với PowerShell quá trình đã không hoạt động (thực sự tôi đã thử các powerhell ise). Không có quy trình nào khác để đính kèm. Bất kỳ ý tưởng? Một khi một ngoại lệ (đó là ngoại lệ của tôi, vì vậy điều này phải xảy ra) xuất hiện trong VS nhưng tôi không thể tái tạo nó.

+2

Tôi chắc chắn đã gỡ lỗi mã C# bằng cách đính kèm vào quá trình powershell.exe. Tôi không thể nhớ là đã từng làm như vậy với ISE, nhưng tôi không biết tại sao điều đó cũng không hiệu quả. – OldFart

Trả lời

8

Là một thay thế, bạn có thể tạo một lớp helper trong thư viện của bạn:

namespace Something { 
    public static class DebugHelper { 
     public static void AttachDebugger() { 
      System.Diagnostics.Debugger.Launch(); 
     } 
    } 
} 

Sau đó, bạn có thể gọi là phương pháp từ PowerShell, và bạn sẽ nhận được chương trình gỡ rối kèm theo.

+2

Tôi nhận thấy rằng đôi khi nó không hoạt động. VS ra mắt nhưng ngoại lệ không bị bắt. Lưu ý rằng tôi đã sử dụng dòng này từ vỏ nguồn trực tiếp: [System.Diagnostics.Debugger] :: Launch() – naeron84

+2

Ý tưởng của tôi là sử dụng [Something.DebugHelper] :: AttachDebugger(), vì vậy bạn có trình gỡ rối trong mã của mình , và sau đó thật dễ dàng để thêm điểm ngắt vv, nhưng có lẽ giải pháp của bạn thậm chí còn đơn giản hơn. –

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