Visual Studio: Tidak tersedia pembongkaran

Saya ingin menjalankan debugger Visual Studio pada program .Net yang telah dikaburkan. (Ini program saya sendiri - saya tidak mencoba memecahkan program orang lain.)

Saat saya mengkompilasi program dengan "System.Diagnostics.Debugger.Break()", atau jika saya melampirkan debugger ke proses yang sedang berjalan, maka debugger menampilkan "Tidak Ada Sumber yang Tersedia". Saya mengerti ini - tidak ada sumber yang sesuai dengan versi program yang dikaburkan. Tetapi ketika saya mengklik "Tampilkan Pembongkaran" itu menunjukkan jendela Pembongkaran dengan "Tidak ada pembongkaran tersedia."

Mengapa? Adakah saran tentang apa yang dapat saya lakukan agar pembongkaran dapat berfungsi?

Di bawah Opsi Debug saya mencentang "Aktifkan debugging tingkat alamat" dan "Tampilkan pembongkaran jika sumber tidak tersedia".

Terima kasih.

Sunting

Hanya untuk mencoba menjelaskan sedikit lebih banyak ...

Program yang dimaksud adalah program saya sendiri, dan program kebingungan yang digunakan juga merupakan program saya sendiri. Program kebingungan menjalankan ILAsm.exe, mengubah kode ILAsm, dan menjalankan ILAsm.exe.

Kebingungan saya rupanya menimbulkan masalah sehingga program tidak lagi berfungsi dengan benar. Untuk memahami bagaimana/mengapa itu tidak berfungsi, saya ingin melacaknya. Tetapi untuk beberapa alasan debugger Visual Studio mengatakan "Tidak tersedia pembongkaran", dan kemudian saya tidak dapat melakukan apa pun. (Ketika program yang tidak dikaburkan dijalankan di bawah Visual Studio, jendela Disassembly dapat dibuka dan menampilkan informasi yang diharapkan. Hanya versi yang dikaburkan yang menghasilkan masalah ini dengan debugger VS.)

Sunting 2

Belum dapat menemukan jawaban atas pertanyaan saya, tetapi saya punya solusi sekarang.

Saya telah menginstal WinDbg dan mengonfirmasi bahwa itu dapat dilampirkan ke program saya yang dikaburkan dan setidaknya dapat melakukan satu langkah dan menunjukkan lokasi eksekusi saat ini di jendela pembongkaran. Tapi saya belum pernah menggunakan WinDbg sebelumnya, dan sepertinya agak menakutkan.

Saya juga mengikuti saran melihat beberapa tempat untuk memuat sos.dll ke WinDbg. Mungkin itu akan membantu.

Namun saya menduga apa yang sebenarnya akan saya lakukan adalah memasukkan banyak pernyataan logging sementara ke dalam program saya di tempat-tempat yang tidak berfungsi, dan mudah-mudahan mendapatkan pemahaman dengan cara itu.


person RenniePet    schedule 15.07.2011    source sumber
comment
Ini program saya sendiri - mungkin Anda memiliki kode sumbernya. Debug itu?   -  person Mitch Wheat    schedule 15.07.2011
comment
Tidak, masalah saya adalah kebingungan saya membuat program tidak berfungsi dengan cara yang tidak jelas. Akan lebih mudah untuk mengetahui apakah saya dapat melacak program yang dikaburkan dan melihat di mana kerusakannya.   -  person RenniePet    schedule 15.07.2011
comment
Lihat stackoverflow.com /questions/5670626/ dan stackoverflow.com/questions/5761202/   -  person RenniePet    schedule 15.07.2011
comment
RenniePet: apakah Anda yakin kebingungan itu yang menyebabkan masalah Anda?   -  person Mitch Wheat    schedule 15.07.2011
comment
Lihat sunting. Terima kasih atas minat Anda.   -  person RenniePet    schedule 15.07.2011


Jawaban (1)


Oke, kebetulan saya tersandung pada kesalahan yang saya lakukan.

Seperti yang saya sebutkan di edit pertama pertanyaan saya, kebingungan saya dilakukan dengan menjalankan ILDAsm.exe, memodifikasi pernyataan ILAsm, dan kemudian menjalankan ILAsm.exe. Ternyata saya kehilangan opsi/Debug pada proses ILAsm.exe. Jadi meskipun build Visual Studio saya adalah build Debug, konversi JIT pada waktu proses adalah konversi Rilis/Optimalkan.

Dengan /Debug ditentukan pada ILAsm.exe saya mendapatkan file PDB, dan ketika debugger Visual Studio terhubung ke program saya, saya mendapatkan tampilan kode sumber IL dan, jika saya memintanya, tampilan pembongkaran juga! Jadi sekarang semuanya baik-baik saja!

person RenniePet    schedule 07.08.2011