Breakpoint Gagal Mengikat - Visual Studio 2015

158

Saya baru saja memutakhirkan dari Visual Studio 2013 hingga 2015 dan sekarang saya mengalami masalah dengan breakpoints.

Ini adalah hit atau miss di mana break point akan benar-benar bekerja dan jika saya menetapkan satu saat debugging saya mendapatkan kesalahan:

Breakpoint gagal diikat.

Bantuan apa pun akan dihargai. Saya siap untuk menyerah pada 2015 dan kembali.

Sealer_05
sumber

Jawaban:

226

Saya memiliki masalah yang sama tetapi solusi yang berbeda. Harap dicatat saya memperbarui ke VS 2015 Pembaruan 1 dan masalahnya masih ada.

Dalam edisi sebelumnya VS memulai debug secara otomatis memicu membangun dalam mode debug. Tetapi dengan VS2015 tidak.

Jadi jika build terakhir Anda dalam mode rilis, dan Anda mencoba debug, breakpoint tidak akan berfungsi.

Anda harus secara manual membangun dalam mode debug terlebih dahulu, kemudian mulai debugging.

Max Favilli
sumber
3
Bukankah ini perilaku aneh? Bisakah itu dianggap sebagai bug?
Tolga Evcimen
Menginstal Pembaruan untuk Microsoft Visual Studio 2015 Pembaruan 3 (KB3165756) memperbaiki masalah debugging untuk saya di tempat sebelumnya saya mendapatkan "Breakpoint gagal untuk mengikat." kesalahan dalam Tampilan C #
hem
2
Ini sebenarnya bagus :) Saya lupa rilis build aktif dan mengalami sesi debugging yang sangat aneh sampai membaca ini saya ingat untuk mengaktifkan debug kembali dan semuanya "normal".
Ulangi Spacer
1
Saya punya pengalaman aneh. Saya harus mengatur build ke "Release", build, lalu "Debug" dan build lagi.
samneric
@TolgaEvcimen Mengingat bahwa setelah lebih dari 2 tahun, pada VS 15.5.6, perilakunya masih sama, saya akan mengatakan MS tidak menganggapnya sebagai bug. Secara pribadi saya akan menemukan lebih logis untuk kembali ke perilaku lama secara otomatis memicu membangun debug. Atau setidaknya memberi peringatan.
Max Favilli
82

Saya memiliki masalah yang sama.

Saya menyelesaikannya dengan menonaktifkan opsi "Optimize code" di tab Build Properties proyek.

Edu_LG
sumber
Masalahnya tetap kembali pada salah satu proyek saya. Pokoknya, Pembaruan 1 keluar sekarang jadi semoga itu membersihkan semuanya visualstudio.com/en-us/news/vs2015-update1-vs.aspx
Sealer_05
2
Bukankah itu inti dari membangun Debug? Saya menyarankan agar Rilis build dengan "Optimize code" dimatikan.
Bart Friederichs
Ketika saya melihat Config Manager, saya beralih ke Debug untuk solusinya, dan menemukan beberapa proyek salah diatur ke Release. Ini berarti memilih Debug di drop down akan menyebabkan proyek-proyek tersebut menggunakan konfigurasi Rilis mereka, yang berarti dioptimalkan.
AaronLS
39

Ini mungkin tampak sepele, tetapi setelah banyak headscratch dengan masalah yang sama seperti yang Anda sebutkan, saya menemukan bahwa build saya ditetapkan untuk "rilis" daripada "debug" ketika saya mencoba debugging .. membangun kembali solusi untuk "debug "Memperbaikinya, dan saya bisa mengatur breakpoint seperti biasa

Kenneth Møller
sumber
2
Itu memungkinkan saya untuk mengatur break point tetapi tidak bertahan selamanya. Saya juga masih memiliki masalah dengan debugging masih melewatkan baris kode acak masih
Sealer_05
Masalah ini tetap ada meskipun semua laporan sementara tentang kesuksesan untuk solusi yang sangat berbeda. Namun, "perbaikan" khusus ini harus diletakkan di samping "adalah komputer Anda terhubung". Ini benar-benar bukan solusi. Ya Anda memang membutuhkan daya dan ya Anda tidak dapat mengatur breakpoints dalam rilis build - geez.
Rick O'Shea
@ Kenenneth Møller Seperti yang Anda sebutkan, ini mungkin terlihat sepele tetapi juga memecahkan masalah saya.
Ben Junior
36

Saya memiliki masalah serupa dengan breakpoint yang gagal untuk diikat, serta variabel lokal tertentu yang tidak dievaluasi di jendela Lokal. Yang akhirnya memperbaikinya adalah mengaktifkan opsi "Suppress JIT optimization on load module (Managed only)" di tab Options-> Debug-> General. Setelah saya atur bahwa itu bisa mengikat tanpa masalah.

Akan
sumber
Aku mencobanya tetapi masih belum mencapai breakpoints dalam pengendali api saya.
Sealer_05
Ada penjelasan yang bagus tentang debugging dengan kode yang dioptimalkan di sini
Nathan
Um, tidak, ini bukan solusi. Apa yang kami dapatkan adalah orang-orang yang secara acak mengubah peralihan yang tidak ada hubungannya dengan masalah ini, yang tampaknya hilang dengan sendirinya
Rick O'Shea
Akhirnya. Ini juga memungkinkan saya untuk menelusuri kode yang sebelumnya dilompati.
Jeff Davis
Ini menyelesaikannya untuk saya di VS 2019, terima kasih banyak!
EM0
14

Saya punya masalah ini. Saya menjalankan sesi profil kinerja yang memodifikasi Web.configfile dengan pengaturan untuk monitor kinerja:

<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>

Ini mematahkan kemampuan saya untuk berhenti di breakpoints. Ketika saya kembali ke Web.config asli (menghapus pengaturan Performance Profiler), breakpoints mulai bekerja lagi.

Allbite
sumber
1
Ini adalah solusi bagi saya setelah profil di VS 2017. Terima kasih banyak.
Lee Taylor
1
Sepertinya ada banyak penyebab breakpoint gagal diikat, tapi ini yang kita lihat.
BJury
2
Ini untuk saya. Saya menghapus AppSetting ini:<add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Team Tools\Performance Tools\vsinstr.exe"/>
Chad Hedgcock
5

Saya memiliki masalah yang sama kemarin. Saya menggunakan fitur "Solusi Bersih" dan itu membantu.

kerneldebugger
sumber
3
Ini hampir seperti pusat komedi. Saya menunggu "Saya melambaikan ayam karet di atas mesin dan itu berhasil". Kami memiliki setengah lusin pengembang yang pernah mengalami masalah ini dan tidak satu pun dari solusi ad-hoc yang ajaib dan bebas penjelasan ini yang berfungsi.
Rick O'Shea
5

solusinya adalah dengan menonaktifkan optimasi desain.

Project Properties> Build> Advanced Compile Options> Enable Optimizations

Julio Chiuchi
sumber
4

Saya menjalankan kinerja pada solusi saya dan itu menambahkan ini ke web.config saya

<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"/> 

yang assemblyPostProcessorTypemasalahnya, saya dihapus dan yang memecahkan masalah saya

xszaboj
sumber
4

Ubah mode Rilis ke Debug, Dalam kasus saya, ini memperbaiki masalah saya.

masukkan deskripsi gambar di sini

Irshad Ahmed Akhonzada
sumber
1

Saya tidak mengubah pengaturan 'mengoptimalkan', tetapi berdasarkan jawaban lain di sini, saya

  1. Tetapkan Solution Explorer untuk Tampilkan Semua File untuk proyek
  2. Menghapus nampan tersembunyi dan folder debug
  3. Melakukan 'Bersih' pada proyek
  4. Dilakukan 'Rebuild' pada proyek

Sejauh ini sudah diperbaiki untuk saya. Sepertinya memperbarui ke VS2015 Update 2 telah merusak beberapa hal di sistem saya.

louisik1
sumber
1

Saya tahu ini adalah posting lama tetapi jika semua trik lain di atas tidak berfungsi untuk Anda, pastikan gambar yang Anda coba debug adalah terkini. Untuk beberapa alasan setelah menerbitkan dan mentransfer proyek .NET Core ke Raspberry Pi saya 'unzip' di RPi tidak menyalin dan menimpa beberapa DLL di direktori kerja. Ketika saya melampirkan debugger berpikir semuanya OK, beberapa breakpoints terkena, yang lain tidak dan beberapa lainnya memberi saya kesalahan "tidak dapat mengikat". Setelah saya menyelesaikan masalah unzip semua breakpoints dan simbol saya kembali. Saya harap ini membantu.

Brian Clever
sumber
0

Saya menemukan kesalahan breakpoint yang mengikat hari ini. Dan saya sudah memecahkan masalah saya melakukan belows.

Jika semua konfigurasi debug Anda tidak benar, Anda tidak dapat memperbaiki masalah dengan melakukan seperti ini.

  1. Proyek Bersih
  2. Jika jalur output berbeda dari folder bin, ganti ke folder bin (ini adalah aturan yang paling penting)
  3. Membangun kembali

Mungkin solusi ini membantu seseorang.

RockOnGom
sumber
0

VS breakpoint tidak dapat mengikat pada metode async.

Saya menginstal agen App Dynamics yang menyebabkan ini. Hapus itu dan Anda baik untuk pergi.

Dani
sumber
0

Saya memiliki masalah yang sama, tetapi tidak menyadari bahwa "Debug" telah berubah menjadi "Rilis" pada bilah alat debug (biasanya langsung di bawah menu). Jadi saya mengaturnya ke "Debug" itu berhasil.

Jared McCracken
sumber
0

LANGKAH 1, Singkirkan yang sudah jelas:

  • Kompilasi dalam mode Debug.
  • Coba Bersihkan Solusi sebelum mengatur breakpoint.
  • Buka folder Debug, dan hapus file .pdb [Aplikasi Anda].
  • Kemudian lakukan Build atau Rebuild aplikasi Anda.
  • Buka folder Debug dan konfirmasi bahwa Anda memiliki file .pdb [Aplikasi Anda] yang baru.
  • Kemudian cobalah untuk mengatur titik istirahat Anda.

LANGKAH 2 Untuk proyek C ++:

Periksa properti proyek berikut:

  • C ++ / Umum / Format Informasi Debug: Database Program.
  • C ++ / Optimasi: Dinonaktifkan.
  • C ++ / Pembuatan kode / Pustaka Runtime: Debug multi-utas.
  • Linker / Debugging / Hasilkan Info Debug: Ya.
  • Linker / Debugging / Hasilkan database program: $ (TargetDir) $ (TargetName) .pdb.
  • Linker / Manifest File / Generate Manifest: No.
  • Linker / Manifest File / Izinkan Isolasi: No.
  • Linker / Embedded IDL / Abaikan IDL tertanam: Ya.
  • Lakukan Langkah 1 Lagi

    Anda dapat mencoba menambahkan __debugbreak (). Pernyataan ini harus masuk dalam file sumber Anda di mana Anda ingin istirahat.

LANGKAH 2 Untuk proyek C #:

  • Dalam proyek properti Build / General / Optimize code harus dinonaktifkan.
  • Dalam pengaturan IDE Debug / Opsi dan Pengaturan / Debugging / General Suppress JIT optimisasi pada modul load (Managed only): Diaktifkan
  • Lakukan Langkah 1 Lagi

Coba buka solusi Anda di komputer lain. Jika Anda dapat mengikat breakpoint pada mesin yang berbeda ini dapat berarti bahwa ada masalah dengan VS atau OS Anda.

LANGKAH 3, Pastikan VS Anda mutakhir:

Ada laporan tentang masalah seperti ini di VS2013 RTM serta VS2015 Update 1 dan Update2.

Dalam VS, buka Alat / Ekstensi & Pembaruan / Pembaruan / Pembaruan Produk dan lihat versi apa yang Anda jalankan. Jika diperlukan pembaruan akan muncul di sana.

LANGKAH 4, Pastikan OS Anda mutakhir:

Terakhir, jika Anda menjalankan OS Win 10, ada bug yang dilaporkan tentang masalah ini yang ada di build 14251. Ini diselesaikan di build 14257 (dan di atas).

Merav Kochavi
sumber
0

Saya hanya mengalami masalah yang sama dan tidak ada jawaban di sini mengenai masalah yang saya hadapi. Tidak seperti dalam pertanyaan itu, saya tidak pernah menerima pesan yang mengatakan ada kegagalan untuk mengikat. Breakpoint tidak pernah mengenai. Semoga ini bermanfaat bagi seseorang di masa depan yang membenturkan kepalanya ke dinding dengan WCF.

TL / DR:
Dalam pesan SOAP ada catatan dengan data buruk menyebabkan breakpoint tidak terkena.

Cerita lengkap:

Saya memiliki layanan WCF berdasarkan WSDL dari tim lain. Bukan definisi saya, tidak ada kontrol atasnya ... Saya menerima pesan dari tim lain ini melalui layanan ini. Dalam kasus saya, saya menerima pesan, dapat mencatat pesan ke tabel log pesan di database (yang terjadi sebelum metode layanan saya dipanggil), metode layanan tampaknya dipanggil (mungkin tidak), dan server merespons dengan a 202 Diterima. Komunikasi berfungsi, kecuali tidak ada data yang disimpan ke database selama panggilan metode.

Karena layanan mengembalikan respons sukses, saya mengesampingkan http dan mengangkut masalah terkait.

Jadi saya menyalakan VS2015 untuk men-debug layanan. Pesan yang dipermasalahkan besar tetapi baik dalam batas-batas apa yang saya harapkan. Saya meletakkan breakpoint pada baris pertama metode layanan dan mengirim pesan besar, tetapi breakpoint tidak pernah memukul. Saya mencoba pesan yang lebih kecil yang saya tahu bekerja pada menjalankan contoh yang sama dan breakpoint baik-baik saja. Jadi semuanya dalam konfigurasi tampak baik-baik saja. Saya pikir mungkin ada sesuatu dalam ukuran pesan.

Saya mencoba semua yang saya bisa temukan - memastikan saya berada dalam konfigurasi debug, bersihkan dan bangun kembali, secara manual melampirkan debugger ke proses w3wp (yang sudah VS), menggunakan Debugger.Break()bukannya breakpoint, mengatur beberapa proyek startup, membongkar proyek pengujian saya sehingga proyek layanan adalah satu-satunya, memperbarui. NET, memulai kembali VS2015, me-reboot, beralih dari IIS Lokal ke IIS Express dan kembali, menciptakan kembali layanan dengan WSDL terbaru yang dijamin. Tidak ada yang penting. Breakpoint tidak pernah mengenai.

Saya akhirnya harus membuang catatan dalam pesan besar satu per satu sampai saya menemukan satu catatan tunggal yang memiliki data buruk. Dalam kasus saya itu adalah satu catatan yang tidak memiliki nilai untuk 2 bidang DateTime. Ketika saya membuat pesan yang hanya memiliki satu catatan ini di dalamnya dan mengirimkannya, breakpoint tidak terkena. Ketika saya memberikan nilai untuk 2 bidang DateTime tersebut dan mengirim pesan (tetap) yang sama di breakpoint yang dipecat seperti yang diharapkan.

Saya memiliki setiap pengecualian CLR diaktifkan, tidak ada yang ditembakkan selain file .pbd yang hilang, yang tidak saya pedulikan. WCF dengan senang hati mengirimkan permintaan dengan catatan buruk. Saya tidak mengatakan bahwa WCF seharusnya tidak mengirimkannya berdasarkan kontrak, hanya saja catatan buruk itu menyebabkan breakpoint tidak terkena.

squillman
sumber
0

Saya harus memodifikasi file web.config untuk mengaktifkan debugging. Ubah ini:

<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"/>

untuk:

<compilation debug="true"/>
sereschkin
sumber
0

Bersihkan seluruh solusi sebelum mencoba solusi lainnya. Setelah mencoba hampir semua yang lain katakan di jawaban sebelumnya, dan memulai kembali visual studio beberapa kali, hanya membersihkan solusinya berhasil!

kekacauan
sumber
0

Saya mencoba semua yang disarankan di sini. Akhirnya, saya mengatur "Halaman Spesifik" di Project Properties -> Web ke URL awal lokal saya, halaman dan parameter permintaan. Melakukan pembersihan dan membangun kembali dalam mode debug dan itu mencapai breakpoint saya.

Kepala suku Irlandia
sumber
0

Meskipun ini adalah build yang jauh lebih baru (VS2017) saya punya masalah dengan proyek-proyek C #. Mencoba membersihkan, membangun kembali, memulai kembali studio visual, dll.

Apa yang diperbaiki adalah menutup Visual Studio dan menghapus folder .vs, yang merupakan folder tersembunyi yang terletak di direktori solusi. Menghapus folder .vs seharusnya tidak menimbulkan masalah bagi Anda, meskipun Anda harus mengatur ulang proyek startup Anda.

ChrisBeamond
sumber
0

Dalam kasus saya, ada file web.config baru yang dibuat setelah saya gunakan Profiler. Memulihkan web.config ke versi sebelumnya, menyelesaikan masalah ini. Itu adalah aplikasi web VS2015 C #.

elang
sumber
0

Jika Anda menerbitkan cek aplikasi web Anda yang Configurationdiatur ke Debug(secara default dalam konfigurasi debug diatur sedemikian rupa sehingga kode tidak dioptimalkan dan tabel simbol dibuat sepenuhnya).masukkan deskripsi gambar di sini

VSB
sumber
-1

Aku melihat jawaban sebelumnya dan @ Will answear tetap masalah utama saya memiliki, yang lain bisa mengedit dan terus tapi mengambil melihat lebih dekat pada AssemblyInfo.cs mengajukan saya menemukan beberapa debugging fitur di mana dinonaktifkan.

Kemudian saya akhirnya menghapus atribut debug lama dan menambahkan yang saya ambil dari proyek lain

#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

Namun saya merasa ini bukan cara terbaik untuk melakukannya.

Raldo94
sumber