Breakpoint không thành công với Bind - Visual Studio 2015


158

Tôi mới nâng cấp từ Visual Studio 2013 lên 2015 và hiện tại tôi đang gặp sự cố với các điểm dừng.

Đó là một cú đánh hoặc một lỗi mà các điểm ngắt sẽ thực sự hoạt động và nếu tôi đặt một điểm trong khi gỡ lỗi, tôi sẽ gặp lỗi:

Điểm dừng không thành công.

Bất kỳ trợ giúp sẽ được đánh giá cao. Tôi đã sẵn sàng để từ bỏ vào năm 2015 và quay trở lại.

Câu trả lời:


226

Tôi đã có cùng một vấn đề nhưng một giải pháp khác nhau. Xin lưu ý rằng tôi đã cập nhật lên VS 2015 Update 1 và vấn đề vẫn còn đó.

Trong phiên bản trước của VS bắt đầu gỡ lỗi tự động kích hoạt bản dựng trong chế độ gỡ lỗi. Nhưng với VS2015 thì không.

Vì vậy, nếu bản dựng cuối cùng của bạn ở chế độ phát hành và bạn thử gỡ lỗi, breakpoint sẽ không hoạt động.

Trước tiên, bạn phải xây dựng thủ công trong chế độ gỡ lỗi, sau đó bắt đầu gỡ lỗi.


3
Đây không phải là một hành vi wierd? Nó có thể được coi là một lỗi?
Tolga Evcample

Cài đặt bản cập nhật cho Microsoft Visual Studio 2015 Update 3 (KB3165756) đã khắc phục sự cố gỡ lỗi cho tôi khi trước đây tôi nhận được "Điểm dừng không thể liên kết." lỗi trong Lượt xem C #
hem

2
Điều này thực sự tốt :) Tôi quên bản dựng phát hành đang hoạt động và đang trải qua phiên gỡ lỗi rất kỳ lạ cho đến khi đọc xong, tôi nhớ kích hoạt gỡ lỗi trở lại và mọi thứ đều "bình thường".
Lặp lại Spacer

1
Tôi đã có một trải nghiệm kỳ lạ. Tôi đã phải thiết lập bản dựng thành "Phát hành", xây dựng, sau đó "Gỡ lỗi" và xây dựng lại.
samneric

@TolgaEvcimen Cho rằng sau hơn 2 năm, kể từ VS 15.5.6, hành vi vẫn như vậy, tôi sẽ nói rằng MS không coi đó là một lỗi. Cá nhân tôi sẽ thấy hợp lý hơn khi trở lại hành vi cũ của việc tự động kích hoạt một bản dựng gỡ lỗi. Hoặc ít nhất là đưa ra một cảnh báo.
Max Favilli

82

Tôi đã từng gặp vấn đề tương tự.

Tôi đã giải quyết nó vô hiệu hóa tùy chọn "Tối ưu hóa mã" trong tab Xây dựng thuộc tính dự án.


Vấn đề vẫn kết thúc ở một trong những dự án của tôi. Dù sao, Cập nhật 1 là ra ngay bây giờ vì vậy hy vọng làm sạch tất cả mọi thứ lên visualstudio.com/en-us/news/vs2015-update1-vs.aspx
Sealer_05

2
Không phải đó là toàn bộ quan điểm của bản dựng Debug sao? Tôi sẽ khuyên bạn không nên xây dựng Bản phát hành với "Tối ưu hóa mã".
Bart Friederichs

Khi tôi nhìn vào Trình quản lý cấu hình, tôi chuyển sang Gỡ lỗi cho giải pháp và thấy một số dự án được đặt không chính xác thành Phát hành. Điều này có nghĩa là việc chọn Gỡ lỗi trong trình đơn thả xuống sẽ khiến các dự án đó sử dụng cấu hình Phát hành của chúng, nghĩa là được tối ưu hóa.
AaronLS

39

Điều này có vẻ tầm thường, nhưng sau rất nhiều vấn đề với các vấn đề tương tự như bạn đề cập, tôi phát hiện ra rằng bản dựng của tôi được đặt thành "phát hành" thay vì "gỡ lỗi" khi tôi cố gắng gỡ lỗi .. xây dựng lại giải pháp cho "gỡ lỗi "đã sửa nó và tôi có thể đặt các điểm dừng như bình thường


2
Điều đó cho phép tôi thiết lập các điểm dừng nhưng không tồn tại mãi mãi. Tôi cũng vẫn gặp vấn đề với việc gỡ lỗi vẫn bỏ qua các dòng mã ngẫu nhiên
Sealer_05

Vấn đề này vẫn tồn tại mặc dù tất cả các báo cáo tạm thời về thành công cho các giải pháp cực kỳ khác nhau. Tuy nhiên, "cách khắc phục" đặc biệt này cần được đặt bên cạnh "là máy tính của bạn đã được cắm". Đó thực sự không phải là một giải pháp. Có, bạn cần nguồn điện và có, bạn không thể đặt điểm dừng trong bản dựng phát hành - geez.
Rick O'Shea

@Kenneth Møller Như bạn đề cập, có thể thấy tầm thường nhưng cũng giải quyết được vấn đề của tôi.
Ben Junior

36

Tôi đã có một vấn đề tương tự với các điểm dừng không liên kết, cũng như các biến cục bộ nhất định không được đánh giá trong cửa sổ Địa phương. Điều cuối cùng đã khắc phục nó là cho phép tùy chọn "Bỏ tối ưu hóa JIT khi tải mô-đun (Chỉ quản lý)" trong tab Tùy chọn-> Gỡ lỗi-> Chung. Khi tôi đặt nó có thể liên kết mà không gặp vấn đề gì.


Tôi đã cho nó một phát súng nhưng vẫn không đạt được điểm dừng trong bộ điều khiển api của tôi.
Sealer_05

Có một lời giải thích tốt về gỡ lỗi với mã được tối ưu hóa ở đây
Nathan

Ừm, không, đây không phải là một giải pháp. Những gì chúng tôi nhận được là mọi người điều chỉnh ngẫu nhiên việc chuyển đổi không liên quan đến vấn đề này, dường như tự nó biến mất
Rick O'Shea

Cuối cùng. Điều này cũng cho phép tôi bước qua mã mà trước đây đã bị nhảy qua.
Jeff Davis

Điều này đã giải quyết nó cho tôi trong VS 2019, cảm ơn bạn rất nhiều!
EM0

14

Tôi đã có vấn đề này. Tôi đã chạy một phiên cấu hình hiệu suất đã sửa đổi Web.configtệp với các cài đặt cho màn hình hiệu suất:

<appSettings>
   <add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Team Tools\Performance Tools\vsinstr.exe"/>
</appSettings>


<compilation debug="true" targetFramework="4.5" 
      assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
   ...
</compilation>


<runtime>
   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
         <assemblyIdentity name="Microsoft.VisualStudio.Enterprise.AspNetHelper" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
         <codeBase version="16.0.0.0" href="file:///D:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/Shared/Common/VSPerfCollectionTools/vs2019/Microsoft.VisualStudio.Enterprise.AspNetHelper.DLL"/>
      </dependentAssembly>
      <dependentAssembly>
         <assemblyIdentity name="VsWebSite.Interop" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
         <codeBase version="8.0.0.0" href="file:///D:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/Shared/Common/VSPerfCollectionTools/vs2019/VsWebSite.Interop.DLL"/>
      </dependentAssembly>
   </assemblyBinding>
</runtime>

Điều này đã phá vỡ khả năng của tôi dừng lại ở điểm dừng. Khi tôi trở lại Web.config ban đầu (đã xóa cài đặt Trình cấu hình hiệu suất), các điểm dừng bắt đầu hoạt động trở lại.


1
Đây là giải pháp cho tôi sau khi lập hồ sơ trong VS 2017. Rất cám ơn.
Lee Taylor

1
Có vẻ như có nhiều nguyên nhân khiến các điểm dừng không liên kết được, nhưng đây là nguyên nhân chúng ta đã thấy.
BJury

2
Đây là nó cho tôi. Tôi đã xóa <add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Team Tools\Performance Tools\vsinstr.exe"/>
Ứng dụng

5

Tôi đã có cùng một vấn đề ngày hôm qua. Tôi đã sử dụng tính năng "Giải pháp sạch" và nó đã giúp.


3
Nó gần giống như trung tâm hài kịch. Tôi đang chờ đợi "Tôi vẫy một con gà cao su qua máy và nó đã hoạt động". Chúng tôi đã có một nửa tá nhà phát triển đã trải qua vấn đề này và không một trong những giải pháp không có lời giải thích, kỳ diệu này hoạt động.
Rick O'Shea

5

giải pháp là vô hiệu hóa tối ưu hóa thiết kế.

Project Properties> Build> Advanced Compile Options> Enable Optimizations


4

Tôi chạy hiệu suất trên giải pháp của mình và đã thêm nó vào web.config

<compilation debug="true" targetFramework="4.5" assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 

đó assemblyPostProcessorTypelà vấn đề, tôi đã xóa nó và nó đã giải quyết vấn đề của tôi


4

Thay đổi chế độ Phát hành thành Gỡ lỗi, Trong trường hợp của tôi, điều này đã khắc phục sự cố của tôi.

nhập mô tả hình ảnh ở đây


1

Tôi đã không thay đổi cài đặt 'tối ưu hóa', nhưng dựa trên các câu trả lời khác ở đây, tôi

  1. Đặt Solution Explorer để hiển thị tất cả các tệp cho dự án
  2. Đã xóa các thư mục bin và gỡ lỗi ẩn
  3. Thực hiện 'Sạch' trong dự án
  4. Thực hiện 'Tái tạo' trong dự án

Cho đến nay điều này đã sửa nó cho tôi. Có vẻ như việc cập nhật lên VS2015 Update 2 đã làm hỏng một vài thứ trên hệ thống của tôi.


1

Tôi biết đây là một bài viết cũ nhưng trong trường hợp tất cả các thủ thuật khác ở trên không hoạt động đối với bạn, hãy đảm bảo hình ảnh bạn đang cố gắng gỡ lỗi là hiện tại. Vì một số lý do sau khi xuất bản và chuyển một dự án .NET Core sang Raspberry Pi 'giải nén' trên RPi đã không sao chép và ghi đè một số DLL trong thư mục làm việc. Khi tôi đính kèm trình gỡ lỗi nghĩ rằng mọi thứ đều ổn, một số điểm dừng bị tấn công, một số khác thì không và một số khác thì cho tôi lỗi "không thể ràng buộc". Khi tôi giải quyết được vấn đề giải nén, tất cả các điểm dừng và ký hiệu của tôi đã quay trở lại. Tôi hi vọng cái này giúp được.


0

Tôi gặp phải lỗi breakpoint ràng buộc ngày hôm nay. Và tôi đã giải quyết vấn đề của mình khi làm việc.

Nếu tất cả các cấu hình gỡ lỗi của bạn không chính xác, bạn không thể khắc phục sự cố khi thực hiện.

  1. Dự án sạch
  2. Nếu đường dẫn đầu ra khác với thư mục bin, hãy thay thế nó vào thư mục bin (đây là quy tắc quan trọng nhất)
  3. Tái tạo

Có lẽ giải pháp này giúp được ai đó.


0

Điểm dừng VS không thể liên kết trên các phương thức async.

Tôi đã cài đặt một tác nhân App Dynamics gây ra điều này. Loại bỏ điều đó và bạn tốt để đi.


0

Tôi có cùng một vấn đề, nhưng đã không nhận ra rằng "Gỡ lỗi" đã thay đổi thành "Phát hành" trên thanh công cụ gỡ lỗi (thường trực tiếp trong menu). Vì vậy, tôi đặt nó thành "Gỡ lỗi" nó hoạt động.



0

BƯỚC 1, Loại trừ sự rõ ràng:

  • Biên dịch trong chế độ Gỡ lỗi.
  • Cố gắng làm sạch giải pháp trước khi thiết lập điểm dừng.
  • Chuyển đến thư mục Gỡ lỗi và xóa tệp [ứng dụng của bạn] .pdb.
  • Sau đó thực hiện Xây dựng hoặc Xây dựng lại ứng dụng của bạn.
  • Chuyển đến thư mục Gỡ lỗi và xác nhận bạn có tệp .pdb hoàn toàn mới.
  • Sau đó cố gắng thiết lập điểm dừng của bạn.

BƯỚC 2 cho các dự án C ++:

Kiểm tra các thuộc tính dự án sau:

  • Định dạng thông tin C ++ / General / Debug: Cơ sở dữ liệu chương trình.
  • C ++ / Tối ưu hóa: Vô hiệu hóa.
  • C ++ / Tạo mã / Thư viện thời gian chạy: Gỡ lỗi đa luồng.
  • Trình liên kết / Gỡ lỗi / Tạo thông tin gỡ lỗi: Có.
  • Trình liên kết / Gỡ lỗi / Tạo cơ sở dữ liệu chương trình: $ (TargetDir) $ (TargetName) .pdb.
  • Trình liên kết / Tệp kê khai / Tạo tệp kê khai: Không.
  • Trình liên kết / Tệp kê khai / Cho phép cách ly: Không.
  • Trình liên kết / IDL nhúng / Bỏ qua IDL nhúng: Có.
  • Làm lại bước 1

    Bạn có thể thử thêm __debugbreak (). Tuyên bố này cần phải đi vào tệp nguồn của bạn, nơi bạn muốn phá vỡ.

BƯỚC 2 cho các dự án C #:

  • Trong các thuộc tính dự án, mã Build / General / Optimize nên được vô hiệu hóa.
  • Trong cài đặt IDE Gỡ lỗi / Tùy chọn và Cài đặt / Gỡ lỗi / Tối ưu hóa chung JIT khi tải mô-đun (Chỉ được quản lý): Đã bật
  • Làm lại bước 1

Hãy thử mở giải pháp của bạn trên các máy khác. Nếu bạn có thể liên kết một điểm dừng trên một máy khác, điều này có thể có nghĩa là có vấn đề với cả VS hoặc HĐH của bạn.

BƯỚC 3, Đảm bảo VS của bạn được cập nhật:

Đã có báo cáo về các vấn đề như thế này trong VS2013 RTM cũng như VS2015 Update 1 và Update2.

Trong VS, đi tới Công cụ / Tiện ích mở rộng & Cập nhật / Cập nhật / Cập nhật sản phẩm và xem phiên bản bạn đang chạy. Nếu một bản cập nhật là cần thiết, nó sẽ xuất hiện ở đó.

BƯỚC 4, Đảm bảo hệ điều hành của bạn được cập nhật:

Cuối cùng, nếu bạn chạy HĐH Win 10, đã có một lỗi được báo cáo liên quan đến vấn đề này tồn tại trong bản dựng 14251. Điều này đã được giải quyết trong bản dựng 14257 (trở lên).


0

Tôi chỉ gặp phải một vấn đề tương tự và không có câu trả lời nào ở đây đánh vào vấn đề mà tôi đang đối mặt. Tuy nhiên, không giống như trong câu hỏi, tôi không bao giờ nhận được bất kỳ tin nhắn nào nói rằng không có sự ràng buộc nào. Điểm dừng không bao giờ đánh. Hy vọng rằng điều này hữu ích cho ai đó trong tương lai đập đầu vào tường với WCF.

TL / DR:
Trong thông báo SOAP có một bản ghi với dữ liệu xấu khiến điểm dừng không bị ảnh hưởng.

Toàn bộ câu chuyện:

Tôi có dịch vụ WCF dựa trên WSDL từ một nhóm khác. Không phải định nghĩa của tôi, không kiểm soát nó ... Tôi nhận được tin nhắn từ nhóm khác thông qua dịch vụ này. Trong trường hợp của tôi, tôi nhận được tin nhắn, có thể ghi thông báo vào bảng nhật ký tin nhắn trong cơ sở dữ liệu (xảy ra trước khi phương thức dịch vụ của tôi được gọi), phương thức dịch vụ dường như được gọi (có thể không phải vậy) và máy chủ phản hồi 202 được chấp nhận. Truyền thông đang hoạt động, ngoại trừ không có dữ liệu nào được lưu vào cơ sở dữ liệu trong khi gọi phương thức.

Vì dịch vụ trả về phản hồi thành công nên tôi loại trừ các vấn đề liên quan đến vận chuyển và http.

Vì vậy, tôi đã kích hoạt VS2015 để gỡ lỗi dịch vụ. Thông điệp trong câu hỏi là lớn nhưng cũng trong giới hạn của những gì tôi mong đợi. Tôi đặt một điểm dừng trên dòng đầu tiên của phương thức dịch vụ và gửi thông điệp lớn qua, nhưng điểm dừng không bao giờ đạt được. Tôi đã thử một tin nhắn nhỏ hơn mà tôi biết đã hoạt động trên cùng một ví dụ chạy và điểm dừng đã được xử lý tốt. Vì vậy, mọi thứ trong cấu hình có vẻ tốt. Tôi nghĩ có lẽ có một cái gì đó trong kích thước tin nhắn.

Tôi đã thử mọi thứ tôi có thể tìm thấy - đảm bảo rằng tôi đang ở trong cấu hình gỡ lỗi, dọn dẹp và xây dựng lại, đính kèm trình gỡ lỗi theo cách thủ công vào quy trình w3wp (mà VS đã có), sử dụng Debugger.Break()thay vì điểm dừng, thiết lập nhiều dự án khởi động, dỡ bỏ dự án thử nghiệm của tôi để dự án dịch vụ là dự án duy nhất, cập nhật .NET, khởi động lại VS2015, khởi động lại, chuyển từ IIS cục bộ sang IIS Express và quay lại, tạo lại dịch vụ với WSDL mới nhất được bảo đảm. Không có gì quan trọng. Điểm dừng không bao giờ được nhấn.

Cuối cùng tôi đã phải loại bỏ các bản ghi trong tin nhắn lớn cho đến khi tôi tìm thấy một bản ghi duy nhất có dữ liệu xấu. Trong trường hợp của tôi, đó là một bản ghi không có giá trị cho 2 trường DateTime. Khi tôi tạo một tin nhắn chỉ có một bản ghi này trong đó và gửi nó, điểm dừng không bị ảnh hưởng. Khi tôi cung cấp các giá trị cho 2 trường DateTime đó và gửi cùng một thông báo (cố định) trong điểm dừng được kích hoạt như mong đợi.

Tôi đã bật mọi ngoại lệ CLR, không có gì khác ngoài các tệp .pbd bị thiếu, điều mà tôi không quan tâm. WCF vui vẻ gửi yêu cầu với một hồ sơ xấu thông qua. Tôi không nói rằng WCF không nên gửi nó dựa trên các hợp đồng, chỉ là hồ sơ xấu đã khiến điểm dừng không bị tấn công.


0

Tôi đã phải sửa đổi tệp web.config để cho phép gỡ lỗi. Thay đổi điều này:

<compilation debug="true" targetFramework="4.5.2" assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

đến:

<compilation debug="true"/>

0

Làm sạch toàn bộ giải pháp trước khi thử bất kỳ giải pháp nào khác. Sau khi thử hầu hết mọi thứ khác đã nói trong các câu trả lời trước đó, và khởi động lại phòng thu trực quan nhiều lần, chỉ cần làm sạch giải pháp là có mẹo!


0

Tôi đã thử mọi thứ được đề xuất ở đây. Cuối cùng, tôi đặt "Trang cụ thể" trong Thuộc tính dự án -> Web thành tham số truy vấn, trang và URL bắt đầu cục bộ của tôi. Đã làm sạch và xây dựng lại trong chế độ gỡ lỗi và nó đạt điểm dừng của tôi.


0

Trong khi đây là bản dựng sau này (VS2017), tôi đã gặp vấn đề này với các dự án C #. Đã thử làm sạch, xây dựng lại, khởi động lại studio hình ảnh, vv

Điều đã sửa nó là đóng Visual Studio và xóa thư mục .vs, một thư mục ẩn nằm trong thư mục giải pháp. Xóa thư mục .vs sẽ không gây ra cho bạn bất kỳ vấn đề nào, mặc dù bạn sẽ cần phải thiết lập lại dự án khởi động của mình.


0

Trong trường hợp của tôi, có một tệp web.config mới được tạo sau khi tôi sử dụng Profiler. Khôi phục web.config về phiên bản trước, đã giải quyết vấn đề này. Đó là một ứng dụng web VS2015 C #.


0

Trong trường hợp bạn đang xuất bản kiểm tra ứng dụng web của bạn Configurationđược đặt thành Debug(theo mặc định trong cấu hình gỡ lỗi được đặt sao cho mã không được tối ưu hóa và bảng biểu tượng được tạo hoàn toàn).nhập mô tả hình ảnh ở đây


-1

Tôi nhìn qua các câu trả lời trước và @ Will answear cố định vấn đề chính tôi đã có, người kia có khả năng chỉnh sửa và tiếp tục nhưng dùng một cái nhìn sâu hơn về các tập tin AssemblyInfo.cs tôi phát hiện ra một số lỗi tính năng mà người tàn tật.

Sau đó, tôi đã kết thúc việc xóa các thuộc tính gỡ lỗi cũ và thêm các thuộc tính mà tôi đã lấy từ một dự án khác

#if DEBUG
[assembly: System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute.DebuggingModes.DisableOptimizations | System.Diagnostics.DebuggableAttribute.DebuggingModes.EnableEditAndContinue | System.Diagnostics.DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | System.Diagnostics.DebuggableAttribute.DebuggingModes.Default)]
#endif

Tuy nhiên, tôi cảm thấy như đây không phải là cách tốt nhất để làm điều đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.