Bagaimana cara mengatur breakpoint bersyarat di Visual Studio?

133

Apakah ada cara mudah untuk mengatur breakpoint bersyarat di Visual Studio?

Jika saya ingin mencapai breakpoint hanya ketika nilai variabel menjadi sesuatu, bagaimana saya bisa melakukannya?

MrClan
sumber
11
Perhatikan bahwa edisi Express tidak memiliki fungsi ini.
Alexei Levenkov
1
Saya menggunakan Express 2015 dan memiliki kemampuan untuk breakpoint bersyarat
mark.monteiro
1
Edisi komunitas 2017 juga memiliki breakpoint bersyarat
PentiumPro200

Jawaban:

174

Atur breakpoint seperti biasa. Klik kanan itu. Klik Kondisi.

Jeff
sumber
1
Dalam VS 2015 Anda harus mengarahkan kursor ke breakpoint dan mengklik ikon roda gigi untuk menetapkan kondisi
mark.monteiro
Maksud Anda, klik kanan, atur kondisi, dapatkan kesalahan "Kondisi untuk breakpoint gagal" .. bukan?
Toby Caulk
1
Jawaban juga harus mencakup sintaks untuk pernyataan bersyarat, atau tautan informatif.
Andrew
50

Saat Anda menggunakan edisi Express, Anda dapat mencoba ini:

#if DEBUG
    if( fooVariable == true )
        System.Diagnostics.Debugger.Break();
#endif

jika pernyataan memastikan bahwa dalam rilis build breakepoint tidak akan ada.

panako
sumber
3
Ini memiliki keuntungan kinerja / penghematan waktu yang hebat. Saya mengulangi setiap potensi 'id' dalam program saya (hanya sekitar 3,5 juta), yang hanya membutuhkan beberapa detik. Saya mencoba menggunakan breakpoint bersyarat tetapi karena itu bukan di cabang bersyarat itu memperlambat kecepatan eksekusi ke titik di mana setelah beberapa menit saya hanya akan mengakhiri sesi debug. Menggunakan breakpoint yang dikompilasi membuatnya instan.
Sandwich Goldfish
35

Visual Studio menyediakan banyak opsi untuk breakpoint bersyarat:

Untuk mengatur semua ini Anda

  1. Atur breakpoint.
  2. Klik kanan pada breakpoint, dan di menu popup Anda memilih opsi yang cocok untuk Anda.

Opsi-opsi ini adalah sebagai berikut:

  • Anda dapat mengatur suatu kondisi, berdasarkan pada ekspresi kode yang Anda berikan (pilih Kondisi dari menu sembulan). Misalnya, Anda dapat menentukan itu foo == 8atau ekspresi lain.
  • Anda dapat membuat pemicu breakpoint setelah dipukul beberapa kali. (pilih Hit Count dari menu popup). Ini adalah opsi yang menyenangkan untuk dimainkan karena Anda sebenarnya tidak terbatas pada penghitungan jumlah hit tertentu, tetapi Anda juga memiliki opsi untuk beberapa skenario lainnya. Saya akan menyerahkan kepada Anda untuk mengeksplorasi kemungkinan.
  • Anda dapat mengatur filter pada ID Proses, ID utas, dan nama mesin (pilih Filter dari menu sembulan)
C Johnson
sumber
16

Cara lain untuk melakukannya, (atau jika Anda menggunakan express) tambahkan kondisi dalam kode:

if(yourCondition)
{
    System.Diagnostics.Debugger.Break();
}
Ignacio Soler Garcia
sumber
9
  1. Atur breakpoint di telepon
  2. Klik kanan pada bola RED
  3. Pilih breakpoint conditioal
  4. Kondisi pengaturan
Tigran
sumber
8

Menulis kondisi yang sebenarnya bisa menjadi bagian yang sulit, jadi saya cenderung

  1. Tetapkan breakpoint reguler .
  2. Jalankan kode sampai breakpoint dipukul untuk pertama kalinya.
  3. Gunakan Jendela Segera (Debug> Windows> Segera) untuk menguji ekspresi Anda .
  4. Klik kanan breakpoint, klik Kondisi dan rekatkan dalam ekspresi Anda .

Keuntungan menggunakan jendela Segera:

  • Ini memiliki IntelliSense .
  • Anda dapat yakin bahwa variabel dalam ekspresi berada dalam cakupan ketika ekspresi dievaluasi.
  • Anda dapat memastikan ekspresi Anda mengembalikan benar atau salah .

Contoh ini rusak ketika kode merujuk ke tabel dengan nama "Pengaturan":

table.GetTableName().Contains("Setting")
Andy Joiner
sumber
5

Buat breakpoint seperti biasa, klik kanan titik merah dan pilih "kondisi".

Brandon Moretz
sumber
4
  1. Atur breakpoint seperti biasa
  2. Klik kanan pada breakpoint dan pilih Kondisi
  3. Anda akan melihat dialog yang mengatakan "Kondisi Breakpoint"
  4. Masukkan kondisi di lapangan misalnya "i == 5"

Breakpoint hanya akan terkena ketika saya berusia 5.

pengguna423119
sumber
4
  1. Atur breakpoint seperti biasa.
  2. Klik kanan pada penanda breakpoint
  3. Klik "Ketentuan ..."
  4. Tulis syarat, Anda dapat menggunakan nama variabel
  5. Pilih "Benar" atau "Telah Berubah"
Casey
sumber
4

Pada Visual Studio 6.0

Alt+ F9!!!

Vorac
sumber
1
-1) Ini tidak berfungsi di VS 2012 2) Pertanyaan ini sudah memiliki banyak jawaban lain (lebih baik) dan 3) siapa yang peduli dengan VS 6.0 (dirilis pada 1998)? 4) Bahkan jika seseorang peduli tentang VS 6, pertanyaannya ditandai dengan. Net yang tidak memiliki dukungan sampai versi VS berikutnya (Visual Studio .Net)
Tim Medora
7
Baiklah, jawaban lain tidak bekerja pada VS 6.0. Jadi saya memposting solusi.
Vorac
1

Tetapkan breakpointseperti biasa, klik kanan break point dan pilih condionopsi dan atur kondisi Anda.

API Panda
sumber
1

Buat breakpoint fungsi kondisional:

  1. Di jendela Breakpoints, klik Baru untuk membuat breakpoint baru.

  2. Pada tab Function, ketik Reverse for Function. Ketik 1 untuk Baris, ketik 1 untuk Karakter, dan kemudian atur Bahasa ke Dasar.

  3. Klik Kondisi dan pastikan bahwa kotak centang Kondisi dipilih. Ketik instr.length > 0Kondisi, pastikan bahwa opsi true dipilih, lalu klik OK.

  4. Di kotak dialog New Breakpoint, klik OK.

  5. Pada menu Debug, klik Mulai.

Jairo
sumber
0

Jika Anda berasal dari Google, jawaban ini mungkin yang Anda cari.

  1. Klik Debug> New BreakPoint> Function Breakpoint masukkan deskripsi gambar di sini

  2. di sana pilih Breakpoint bersyarat.

T.Todua
sumber