2011-12-20 8 views
21

Đây thực sự là một phần khác của câu hỏi này.thời gian chạy ngôn ngữ chung không thể đặt điểm ngắt

Error settings breakpoints but only on some lines while debugging

tôi từ xa gỡ lỗi một plugin CRM 2011 tại vs 2010.

I'n một trong các file nguồn của tôi, tôi có thể đặt breakpoint suốt mã ngoại trừ ở một vài nơi.

Khi tôi cố gắng đặt điểm ngắt, tôi nhận được lỗi này "Không thể đặt điểm ngắt sau:" và "Thời gian chạy ngôn ngữ chung không thể đặt điểm ngắt."

protected override void ExecutePlugin() 
{ 
    SetStateResponse response = new SetStateResponse(); // Breakpoint works 

    // Message switch 
    switch (_crmMessage) // Breakpoint error 
    { 
     case CrmPluginMessageEnum.Create: 

     Entity pimage = null; // Breakpoint error 
     if (_context.PostEntityImages.ContainsKey("postcreate")) // Breakpoint works 
      pimage = _context.PostEntityImages["postcreate"]; // Breakpoint error 

     break; // Breakpoint error 
     } 
} // Breakpoint error 

CẬP NHẬT Ngoài ra, trong cửa sổ module nó cho thấy dll như Tối ưu hóa: Không có tài Code: Có Symbol Tình trạng: Biểu tượng Loaded

+1

Vui lòng thêm mã của bạn! Có rất nhiều trường hợp (như lambda-expression, khai báo biến không có khởi tạo ví dụ), nơi bạn không thể thiết lập một điểm ngắt bình thường. –

+0

http://blogs.msdn.com/b/habibh/archive/2009/09/01/troubleshooting-common-breakpoint-problems-in-the-visual-studio-debugger-part-i.aspx –

+0

@DJKRAZE F9 làm điều tương tự. Kiểm tra liên kết trong câu hỏi để xem mã ví dụ. – user1231231412

Trả lời

0

Tiếp tục để cập nhật của bạn về DLL được tối ưu hóa các dòng bạn đã chỉ ra nơi các điểm ngắt không hoạt động có thể được tối ưu hóa khi toàn bộ câu lệnh chuyển đổi của bạn không làm bất cứ điều gì khác quyết định có gán giá trị cho biến không bao giờ được sử dụng và không vượt quá phạm vi của câu lệnh chuyển đổi. Như vậy trình biên dịch sẽ đơn giản không tạo ra bất kỳ mã nào cho câu lệnh switch vì nó không làm gì cả hoặc jit chỉ loại bỏ nó ở thời gian chạy vì cùng một lý do.

+0

Đúng. Thông qua phản xạ nó cho thấy rằng nó đã được chuyển đổi thành một câu lệnh if. – user1231231412

3

Tôi đã gặp vấn đề này khi tôi đã mở dự án trong hai trường hợp của Visual Studio. Dự án mà tôi không gỡ lỗi có khóa trên tệp và thông báo cho tôi "Tệp này đã bị sửa đổi bên ngoài trình chỉnh sửa nguồn". Sau khi chấp nhận các thay đổi trong giải pháp không gỡ lỗi của tôi, tôi không còn nhận được lỗi và các điểm ngắt của tôi đã được nhấn trong giải pháp của tôi mà tôi đã gỡ lỗi.

Có vẻ như có nhiều nguyên nhân có thể xảy ra với lỗi này, nhưng điều này đã làm cho tôi.

0

Tôi chỉ có một trải nghiệm tương tự và cách tôi làm việc thông qua đó là đặt điểm ngắt tại vị trí mà thường trình được gọi và sau đó thực hiện một bước cho đến khi tôi thấy chính xác nó đang làm gì. Trong trường hợp của tôi, có một sự trở lại đã ngăn chặn tất cả các mã trong thói quen chạy, do đó, trình tối ưu hóa ném tất cả ra ngoài. Đôi khi đó là những điều ngu ngốc, phải không? Dù sao, nếu bạn bắt đầu ở một cấp độ cao hơn trong ngăn xếp cuộc gọi và bước vào thói quen mà vấn đề là, lý do cho vấn đề có thể trở nên rõ ràng hơn.

0

Một nguyên nhân khác của vấn đề này tôi vừa phát hiện nếu bạn đang gỡ lỗi chống lại CRM không cập nhật điểm đăng ký plugin. Ngay cả khi bạn sao chép các tệp DLL mới vào máy đích và đính kèm từ xa vào quy trình đó không phải là DLL CRM sẽ sử dụng. CRM sẽ cố gắng lấy một bản sao của một phiên bản cũ từ cơ sở dữ liệu của nó cho đến khi bạn chạy lại đăng ký plugin.

Lỗi đã lãng phí một ngày rưỡi đối với tôi!

26

Hai khả năng, đã loại được tham chiếu bởi câu trả lời khác:

  1. Hãy chắc chắn rằng bạn đang sử dụng xây dựng gỡ lỗi của lắp ráp thay vì Release xây dựng, bởi vì phát hành xây dựng sẽ loại bỏ hoặc tối ưu hóa của bạn mã.
  2. Đảm bảo bạn đang cập nhật phiên bản mỗi khi bạn triển khai các hội đồng trong Visual Studio (trên tab thuộc tính dự án). Khi bạn tăng phiên bản, CRM chắc chắn sẽ hủy phiên bản lắp ráp cũ và tải lại phiên bản mới mà không cần thiết lập lại IIS.
0

Tôi gặp lỗi này khi bắt đầu chạy gỡ lỗi dự án và tôi giải quyết nó bằng cách làm sạch tất cả dự án và xây dựng lại tất cả dự án, sau khi xây dựng lại lỗi biến mất.