Visual Studio 2010 membunuh (tidak ada kata lain) data di salah satu argumen fungsi di blok tidak aman. Apa yang bisa menyebabkan kesalahan ini? Pesan berikut ini ditunjukkan oleh debugger.
Cannot obtain value of local or argument as it is not available at this instruction pointer, possibly because it has been optimized away.
c#
visual-studio-2010
debugging
rasa ingin tahu
sumber
sumber
Cannot obtain value of local or argument '<this>' as it is not available at this instruction pointer, possibly because it has been optimized away. System.Threading.Tasks.TaskExceptionHolder
Jawaban:
Pergi ke Properti Proyek dan di bawah Bangun Pastikan bahwa kotak centang "Kode Optimasi" tidak dicentang.
Juga, setel tarik turun "Info Debug" ke "Penuh" di Opsi Lanjut (Di bawah tab Bangun).
sumber
Juga Dalam VS 2015 Edisi Komunitas
pergi ke Debug-> Opsi atau Alat-> Opsi
dan periksa Debugging-> Umum-> Suppress JIT optimization on load module (Managed only)
sumber
Jika Anda mengkompilasi dengan optimasi yang diaktifkan, maka banyak variabel akan dihapus; sebagai contoh:
di sini variabel lokal
value
biasanya akan dihapus, menjaga nilai pada stack - agak seperti seolah-olah Anda telah menulis:Juga, jika nilai kembali tidak digunakan sama sekali , maka akan dijatuhkan melalui "pop" (daripada disimpan di lokal melalui "stloc", dan sekali lagi; lokal tidak akan ada).
Karena itu, dalam build seperti itu debugger tidak bisa mendapatkan nilai saat ini
value
karena tidak ada - hanya ada untuk sekejap antaraGetValue()
danDoSomething(...)
.Begitu; jika Anda ingin men-debug ... jangan gunakan rilis build! atau setidaknya, nonaktifkan optimisasi saat Anda debug.
sumber
http://www.guntucomputerhacks.blogspot.com.au/2014/07/cannot-obtain-value-of-local-or.html
Ini bekerja untuk saya di visual studio 2013.
Yang harus Anda lakukan adalah ..
sumber
Saya hanya berlari ke ini dan saya sedang menjalankan di bawah
Release
membangun konfigurasi bukannyaDebug
membangun konfigurasi. Setelah saya beralih kembali keDebug
variabel saya muncul di arloji lagi.sumber
Dalam Visual Studio 2017 goto Debug-> Option lalu centang Debugging-> general-> dan centang opsi ini
sumber
Ketika saya dihadapkan dengan masalah yang sama, saya hanya perlu membersihkan solusi saya sebelum membangun kembali. Itu merawatnya untuk saya.
sumber
Mengenai masalah dengan properti "Optimalkan kode" yang TIDAK DIHAPUS namun kode masih dikompilasi sebagai dioptimalkan: Apa yang akhirnya membantu saya setelah mencoba semuanya memeriksa kotak centang "Aktifkan debug kode yang tidak dikelola" pada halaman pengaturan yang sama (Properti proyek - Debug). Itu tidak secara langsung berhubungan dengan optimasi kode, tetapi dengan ini diaktifkan, VS tidak lagi mengoptimalkan perpustakaan saya dan saya bisa men-debug.
sumber
Enable unmanaged code debugging
. AdaEnable native code debugging
, saya mencoba memeriksa ini tetapi tidak ada bedanya.Saya telah menghadapi masalah yang sama dan solusi bagi saya berubah
Solution Configuration
dariRelease
menjadiDebug
. Semoga ini bisa membantusumber
Dalam kasus saya, saya sedang mengerjakan proyek web api dan meskipun proyek diatur dengan benar untuk debug penuh, saya masih melihat kesalahan ini setiap kali saya lampirkan pada proses IIS yang saya coba debug. Kemudian saya menyadari bahwa profil publish diatur untuk menggunakan konfigurasi Release. Jadi satu tempat lagi untuk memeriksa adalah profil publikasi Anda jika Anda menggunakan fitur 'Publikasikan' proyek dotnet web api Anda.
sumber
Saya menemukan bahwa saya memiliki masalah yang sama ketika saya menjalankan proyek dan debugging dengan melampirkan ke proses IIS. Saya juga menjalankan dalam mode Debug dengan optimasi dimatikan. Sementara saya pikir kode itu dikompilasi dengan baik, ketika saya melepaskan dan mencoba mengkompilasi, salah satu referensi tidak ditemukan. Ini karena pengembang lain di sini yang melakukan modifikasi dan mengubah lokasi referensi. Referensi tidak muncul dengan simbol peringatan, jadi saya pikir semuanya baik-baik saja sampai saya melakukan kompilasi. Setelah memperbaiki referensi dan menjalankannya lagi itu berhasil.
sumber
Sebagai jawaban tambahan bagi mereka yang mengalami masalah ini saat men-debug aplikasi web situs web Azure:
Ketika menggunakan dari GitHub, misalnya, kode dikompilasi di server Azure dioptimalkan secara default.
Saya memberitahu server untuk mengkompilasi dengan cara debuggable dengan mengatur
SCM_BUILD_ARGS
ke/p:Configuration=Debug
tetapi ada lebih banyak opsi. Lihat ini: http://azure.microsoft.com/blog/2014/05/08/introduction-to-remote-debugging-on-azure-web-sites-part-3-multi-instance-environment-and-git /
sumber
Dalam Visual Studio 2012:
Buka properti proyek -> Debug -> Hapus centang "Aktifkan proses hosting Visual Studio"
sumber
Untuk aplikasi web ada masalah lain yang penting dan memilih konfigurasi yang benar selama proses penerbitan aplikasi.
Anda dapat membangun aplikasi dalam mode debug, tetapi itu mungkin terjadi Anda menerbitkannya dalam mode rilis yang menambah kode secara default tetapi IDE dapat menyesatkan Anda karena itu menunjukkan mode debug saat kode yang diterbitkan berada dalam mode rilis. Anda dapat melihat detail di foto di bawah ini:
sumber
Periksa untuk melihat apakah Anda memiliki atribut Debuggable di file AssemblyInfo Anda. Jika ada, hapus dan buat kembali solusi Anda untuk melihat apakah variabel lokal tersedia.
Atribut debuggable saya disetel ke: DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints yang menurut artikel MSDN ini memberitahu kompiler JIT untuk menggunakan pengoptimalan. Saya menghapus baris ini dari file AssemblyInfo.cs saya dan variabel lokal tersedia.
sumber
Dalam Visual Studio 2017 atau 2015:
Pergi ke Solusi klik kanan pada solusi kemudian pilih Properties-> pilih semua Configuration-> Debug kemudian klik OK. Setelah itu Rebuild and Run, solusi ini bekerja untuk saya.
sumber
Saya memiliki masalah yang sama. Mencoba semua hal di atas dan mendapati bahwa saya juga harus menghapus semua yang ada di dalam {PROJECT_ROOT} \ bin \ Release \ netcoreapp2.2 dan {PROJECT_ROOT} \ obj \ Release \ netcoreapp2.2 untuk proyek saya. Yang pasti dirilis untuk penerbitan karena walaupun saya menggunakan alat penyebaran / bitbucket di Azure Web App saya, saya memang mencoba Build >> Publish >> Publish to Azure karena saya ingin memeriksa file mana yang sebenarnya digunakan.
sumber
Punya masalah yang sama sebelumnya dengan aplikasi WPF dan semua solusi di sini TIDAK menyelesaikan masalah . Masalahnya adalah Modul sudah dioptimalkan sehingga solusi berikut JANGAN BEKERJA (atau tidak cukup untuk menyelesaikan masalah):
Modul ini masih dimuat Dioptimalkan. Lihat tangkapan layar berikut:
Untuk mengatasi masalah ini, Anda harus menghapus modul yang dioptimalkan. Untuk menemukan jalur modul yang dioptimalkan, Anda dapat menggunakan alat seperti Process Hacker .
Klik dua kali program Anda di " Panel proses " lalu di jendela baru buka tab " .NET Assemblies ". Kemudian di kolom " Jalur gambar asli " Anda menemukan semua jalur Modul yang dioptimalkan . Temukan yang Anda ingin de-optimalkan dan hapus folder (lihat screenshot di bawah): (Saya mengaburkan nama perusahaan saya untuk alasan yang jelas)
Mulai ulang aplikasi Anda (dengan kotak centang pada langkah 1 dicentang dengan benar) dan itu akan berfungsi.
Catatan : File mungkin dikunci karena dibuka oleh proses lain, coba tutup Visual Studio. Jika file masih terkunci, Anda dapat menggunakan program seperti Lock Hunter
sumber