Saya memiliki program .NET yang tidak dapat dijalankan dari Visual Studio karena beberapa alasan (file Excel yang dibuat dari proyek template Excel 2010) yang saya perlukan untuk men-debug acara startup.
Jika saya ingin men-debug kejadian yang muncul setelah inisialisasi program, tidak ada masalah. Saya menjalankan program dari penjelajah, melampirkan proses ke Visual Studio dan menambahkan beberapa titik putus dalam kode. Tapi di sini, saya perlu meletakkan breakpoint pada acara startup. Saya harus dapat melampirkan proses ke Visual Studio, tidak bergantung pada PID, tetapi pada nama proses tertentu atau solusi lain apa pun yang akan berfungsi.
Tentu saja menambahkan a Thread.Sleep(1000)
di acara startup saya untuk memberi saya waktu untuk melampirkan proses di Visual Studio tidak mungkin dilakukan!
sumber
Saya sedang men-debug plugin C ++ dalam proses yang muncul secara eksternal yang macet dengan melemparkan pengecualian saat startup dan ini bekerja dengan sempurna untuk saya:
Tambahkan Reattach Extension gratis untuk Visual Studio . Minta untuk melampirkan kembali ke nama proses sebelum diluncurkan. Ini akan memunculkan dialog modal yang mengatakan sedang menunggu nama proses untuk diluncurkan.
Sekarang luncurkan proses dan debugger Visual Studio akan segera terpasang, menangkap pengecualian dan mencapai titik putus.
sumber
Ikuti langkah-langkah berikut jika Anda memiliki Visual Studio 2017-2019:
Jauh lebih mudah daripada saran lain: Anda tidak perlu mengotak-atik properti proyek, dan tidak perlu ekstensi.
sumber
Saya menemukan jawaban ini ketika saya mencari sesuatu yang serupa. Dalam kasus saya, saya tidak bisa begitu saja menggunakan program yang dapat dieksekusi sebagai program startup proyek saya karena itu harus dimulai di lingkungan yang sangat spesifik yang tidak dapat saya reproduksi dengan mudah (namanya: dimulai dari cygwin).
Saya melihat Reattach Extension seperti yang disarankan oleh mrstrange dan juga Attach To Anything yang sangat mirip ekstensi ... tetapi file executable saya tampaknya menutup terlalu cepat untuk pemberitahuan dan lampiran ekstensi.
Apa yang akhirnya membantu saya adalah ini: https://stackoverflow.com/a/4042545/1560865 , yang mereferensikan artikel MSDN Cara: Meluncurkan Debugger Secara Otomatis , yang pada gilirannya mencantumkan langkah-langkah berikut:
a. Klik kanan folder Opsi Eksekusi File Gambar , dan pada menu pintasan, klik Kunci Baru .
b. Klik kanan kunci baru, dan pada menu pintasan, klik Ubah nama . c. Edit nama kunci ke nama aplikasi Anda; myapp.exe , dalam contoh ini.
debugger
.vsjitdebugger.exe
.a. Buka Panel Kontrol dalam tampilan Klasik, dan klik dua kali Sistem .
b. Klik Pengaturan Sistem Lanjut .
c. Di System Properties , klik tab Advanced .
d. Pada tab Advanced , klik Variabel Lingkungan .
e. Di kotak dialog Variabel Lingkungan , di bawah Variabel sistem , pilih Jalur , lalu klik tombol Edit .
f. Di Edit Variabel Sistemkotak dialog, tambahkan direktori ke kotak nilai Variabel . Gunakan titik koma untuk memisahkannya dari entri lain dalam daftar.
g. Klik OK untuk menutup kotak dialog Edit Variabel Sistem .
h. Klik OK untuk menutup kotak dialog Variabel Lingkungan .
saya. Klik OK untuk menutup kotak dialog System Properties .
Semoga ini bisa membantu orang lain di masa depan!
sumber
Jika tidak ada proses maka Visual Studio tidak dapat melampirkan .
Namun, Anda dapat mengatur program startup proyek Anda menjadi sesuatu selain output dari proyek Anda.
sumber
Anda dapat menampilkan MessageBox, ini akan memblokir aplikasi, lalu Anda melampirkan atau memasang kembali debugger ke proses dan klik ok untuk melanjutkan:
Anda dapat menambahkannya ke konstruktor Formulir (jika Anda menggunakan winforms), jadi ini akan dijalankan sebelum yang lain, kecuali untuk inisialisasi komponen:
Ketika Anda menyelesaikan debugging, komentari baris itu.
sumber
Anda dapat memulai debugger dari kode Anda melalui
Tapi jangan sampai menghapus baris ini sebelum mengirimkan aplikasi Anda. Mungkin Anda ingin menggunakan flag compiler untuk memastikan:
sumber
Satu solusi kecil yang mungkin cocok untuk banyak orang.
di baris pertama kode yang akan dijalankan exe, tambahkan perintah ini
System.Threading.Thread.Sleep (20000)
Itu akan membuat exe tidur selama 20 detik sebelum mulai memproses apa pun. Kemudian Anda memiliki waktu 20 detik untuk melampirkan proses, yang dapat dilakukan dengan cepat dengan ctrl + alt + p, lalu temukan prosesnya, lalu masukkan untuk melampirkan.
Tidak banyak jawaban tetapi berhasil untuk saya: -)
sumber