Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dukungan CMake asli tersedia di Visual Studio 2017 dan yang lebih baru. Untuk melihat dokumentasi untuk versi ini, atur kontrol pemilih Versi Visual Studio untuk artikel ini ke Visual Studio 2017 atau yang lebih baru. Kontrol tersebut dapat ditemukan di bagian atas daftar isi pada halaman ini.
Semua target CMake yang dapat dieksekusi ditampilkan di menu dropdown Item Startup di toolbar. Pilih salah satu untuk memulai sesi penelusuran kesalahan dan meluncurkan debugger.
Dropdown menyediakan daftar target debug untuk dipilih. Item yang dipilih muncul sebagai tombol putar diikuti dengan nama target debug yang dipilih untuk dijalankan. Dalam contoh ini, target debug yang dipilih Halo Dunia .exe.
Anda juga dapat memulai sesi debug dari Penjelajah Solusi. Pertama, beralihlah ke Tampilan Target CMake di jendela Penjelajah Solusi.
Penjelajah solusi ditampilkan. Klik kanan pada item di Tampilan Folder telah membuka menu yang memperlihatkan opsi seperti Buka, Buka dengan, Bandingkan dengan, dan sebagainya. Item menu Beralih ke Tampilan Target disorot.
Kemudian, klik kanan pada executable dan pilih Debug. Perintah ini secara otomatis mulai men-debug target yang dipilih berdasarkan konfigurasi aktif Anda.
Klik kanan pada target dalam tampilan Target CMake telah membuka menu dengan opsi seperti Atur sebagai item Startup, Build, Clean All, dan sebagainya. Opsi menu Debug disorot.
Mulai dari Visual Studio 2022 Versi 17.6, Anda juga dapat memulai sesi penelusuran kesalahan pada file CMakeLists.txt Anda. Untuk melakukannya, cukup atur titik henti di file CMakeLists.txt Anda dan jalankan Konfigurasi proyek dengan CMake Debugger dari dropdown Proyek .
Dropdown Proyek ditampilkan. Opsi menu untuk Mengonfigurasi Project dengan debugger CMake disorot.
Menyesuaikan pengaturan debugger
Anda dapat menyesuaikan pengaturan debugger untuk target CMake yang dapat dieksekusi dalam proyek Anda. File tersebut ditemukan dalam file konfigurasi yang disebut launch.vs.json, yang terletak di .vs folder di akar proyek Anda. File konfigurasi peluncuran berguna dalam sebagian besar skenario penelusuran kesalahan, karena Anda dapat mengonfigurasi dan menyimpan detail penyiapan penelusuran kesalahan Anda. Ada tiga titik masuk ke file ini:
- Menu Debug: Pilih Debug > Debug dan Luncurkan Pengaturan untuk ${activeDebugTarget} dari menu utama untuk menyesuaikan konfigurasi debug khusus untuk target debug aktif Anda. Jika Anda tidak memilih target debug, opsi ini berwarna abu-abu.
- Tampilan Target: Navigasi ke Tampilan Target di Penjelajah Solusi. Kemudian, klik kanan pada target debug dan pilih Tambahkan Konfigurasi Debug untuk menyesuaikan konfigurasi debug khusus untuk target yang dipilih.
-
Root CMakeLists.txt: Klik kanan pada CMakeLists.txt root dan pilih Tambahkan Konfigurasi Debug untuk membuka kotak dialog Pilih Debugger. Dialog memungkinkan Anda menambahkan semua jenis konfigurasi debug, tetapi Anda harus menentukan target CMake secara manual untuk dipanggil melalui
projectTargetproperti .
Anda dapat mengedit file launch.vs.json untuk membuat konfigurasi debug untuk sejumlah target CMake. Saat Anda menyimpan file, Visual Studio membuat entri untuk setiap konfigurasi baru di menu dropdown Item Startup.
Kunci referensi dalam CMakeSettings.json
Untuk mereferensikan kunci apa pun dalam file CMakeSettings.json , tambahkan cmake. sebelumnya di launch.vs.json. Contoh berikut menunjukkan file launch.vs.json sederhana yang menarik nilai remoteCopySources kunci dalam file CMakeSettings.json untuk konfigurasi yang saat ini dipilih:
{
"version": "0.2.1",
"configurations": [
{
"type": "default",
"project": "CMakeLists.txt",
"projectTarget": "CMakeHelloWorld.exe (Debug\\CMakeHelloWorld.exe)",
"name": "CMakeHelloWorld.exe (Debug\\CMakeHelloWorld.exe)",
"args": ["${cmake.remoteCopySources}"]
}
]
}
Variabel lingkungan yang ditentukan dalam CMakeSettings.json juga dapat digunakan dalam launch.vs.json menggunakan sintaks ${env.VARIABLE_NAME}. Di Visual Studio 2019 versi 16.4 dan yang lebih baru, target debug secara otomatis diluncurkan menggunakan lingkungan yang Anda tentukan di CMakeSettings.json. Anda dapat membatalkan set variabel lingkungan dengan mengaturnya ke null.
referensi Launch.vs.json
Ada banyak properti launch.vs.json untuk mendukung semua skenario penelusuran kesalahan Anda. Properti berikut umum untuk semua konfigurasi debug, baik jarak jauh maupun lokal:
projectTarget: Menentukan target CMake yang akan dipanggil saat membangun proyek. Visual Studio secara otomatis mengisi properti ini jika Anda memasukkan launch.vs.json dari Menu Debug atau Tampilan Target. Nilai ini harus cocok dengan nama target debug yang ada yang tercantum di menu dropdown Item Startup.env: Variabel lingkungan tambahan untuk ditambahkan menggunakan sintaks:"env": { "DEBUG_LOGGING_LEVEL": "trace;info", "ENABLE_TRACING": "true" }args: Argumen baris perintah diteruskan ke program untuk debug.
referensi Launch.vs.json untuk proyek jarak jauh dan WSL
Di Visual Studio 2019 versi 16.6, kami menambahkan konfigurasi type: cppgdb debug baru untuk menyederhanakan penelusuran kesalahan pada sistem jarak jauh dan WSL. Konfigurasi debug lama type: cppdbg masih didukung.
Jenis konfigurasi cppgdb
-
name: Nama yang mudah diingat untuk mengidentifikasi konfigurasi di menu dropdown Item Startup. -
project: Menentukan jalur relatif ke file proyek. Biasanya, Anda tidak perlu mengubah jalur ini saat men-debug proyek CMake. -
projectTarget: Menentukan target CMake yang akan dipanggil saat membangun proyek. Visual Studio secara otomatis mengisi properti ini jika Anda memasukkan launch.vs.json dari Menu Debug atau Tampilan Target. Nilai target ini harus cocok dengan nama target debug yang ada yang tercantum dalam menu dropdown Item Startup. -
debuggerConfiguration: Menunjukkan kumpulan nilai default debugging mana yang akan digunakan. Di Visual Studio 2019 versi 16.6, satu-satunya opsi yang valid adalahgdb. Visual Studio 2019 versi 16.7 atau yang lebih baru juga mendukunggdbserver. -
args: Argumen baris perintah diteruskan saat memulai ke program yang sedang di-debug. -
env: Variabel lingkungan tambahan yang diteruskan ke program yang sedang di-debug. Contohnya,{"DISPLAY": "0.0"}. -
processID: ID proses Linux untuk dilampirkan. Hanya digunakan saat melampirkan ke proses jarak jauh. Untuk informasi selengkapnya, lihat Memecahkan masalah melampirkan ke proses menggunakan GDB.
Opsi tambahan untuk gdb konfigurasi
-
program: Default ke"${debugInfo.fullTargetPath}". Jalur Unix ke aplikasi yang akan di-debug. Hanya diperlukan jika berbeda dari target yang dapat dieksekusi di lokasi build atau penyebaran. -
remoteMachineName: Default ke"${debugInfo.remoteMachineName}". Nama sistem jarak jauh yang menghosting program untuk di-debug. Hanya diperlukan jika berbeda dari sistem build. Harus memiliki entri yang ada di Pengelola Sambungan. Tekan Ctrl+Spasi untuk melihat daftar semua koneksi jarak jauh yang ada. -
cwd: Default ke"${debugInfo.defaultWorkingDirectory}". Jalur Unix ke direktori pada sistem jarak jauh tempatprogramdijalankan. Direktori harus ada. -
gdbpath: Default ke/usr/bin/gdb. Jalur Unix penuh ke yanggdbdigunakan untuk men-debug. Hanya diperlukan jika menggunakan versi kustom .gdb -
preDebugCommand: Perintah Linux untuk segera berjalan sebelum memanggilgdb.gdbtidak dimulai sampai perintah selesai. Anda dapat menggunakan opsi untuk menjalankan skrip sebelum eksekusigdb.
Opsi tambahan yang gdbserver diizinkan dengan konfigurasi (16.7 atau yang lebih baru)
program: Default ke"${debugInfo.fullTargetPath}". Jalur Unix ke aplikasi yang akan di-debug. Hanya diperlukan jika berbeda dari target yang dapat dieksekusi di lokasi build atau penyebaran.Petunjuk / Saran
Penyebaran belum didukung untuk skenario kompilasi silang lokal. Jika Anda mengkompilasi silang di Windows (misalnya, menggunakan pengkompilasi silang di Windows untuk membangun Linux ARM yang dapat dieksekusi) maka Anda harus menyalin biner secara manual ke lokasi yang ditentukan oleh
programpada komputer ARM jarak jauh sebelum debugging.remoteMachineName: Default ke"${debugInfo.remoteMachineName}". Nama sistem jarak jauh yang menghosting program untuk di-debug. Hanya diperlukan jika berbeda dari sistem build. Harus memiliki entri yang ada di Pengelola Sambungan. Tekan Ctrl+Spasi untuk melihat daftar semua koneksi jarak jauh yang ada.cwd: Default ke"${debugInfo.defaultWorkingDirectory}". Jalur Unix penuh ke direktori pada sistem jarak jauh tempatprogramdijalankan. Direktori harus ada.gdbPath: Jalur lengkap Windows menujugdbyang digunakan untuk debug.gdbserverPath: Default keusr/bin/gdbserver. Jalur Unix penuh ke yanggdbserverdigunakan untuk men-debug.preDebugCommand: Perintah Linux untuk segera berjalan sebelum memulaigdbserver.gdbservertidak dimulai sampai perintah selesai.
Opsi penyebaran
Gunakan opsi berikut untuk memisahkan komputer build Anda (ditentukan dalam CMakeSettings.json) dari komputer debug jarak jauh Anda.
-
remoteMachineName: Komputer debug jarak jauh. Hanya diperlukan jika berbeda dari komputer build. Harus memiliki entri yang ada di Pengelola Sambungan. Tekan Ctrl+Spasi untuk melihat daftar semua koneksi jarak jauh yang ada. -
disableDeploy: Default kefalse. Menunjukkan apakah pemisahan build/debug dinonaktifkan. Ketikafalse, opsi ini memungkinkan build dan debug terjadi pada dua komputer terpisah. -
deployDirectory: Jalur Unix penuh ke direktori tempatremoteMachineNameexecutable disalin. -
deploy: Array pengaturan penyebaran tingkat lanjut. Anda hanya perlu mengonfigurasi pengaturan ini ketika Anda menginginkan kontrol yang lebih terperinci atas proses penyebaran. Secara default, hanya file yang diperlukan agar proses debug disebarkan ke komputer debug jarak jauh.-
sourceMachine: Komputer tempat file atau direktori disalin. Tekan Ctrl+Spasi untuk melihat daftar semua koneksi jarak jauh yang disimpan dalam Pengelola Sambungan. Saat membangun secara asli di WSL, opsi ini diabaikan. -
targetMachine: Komputer tempat file atau direktori disalin. Tekan Ctrl+Spasi untuk melihat daftar semua koneksi jarak jauh yang disimpan dalam Pengelola Sambungan. -
sourcePath: Lokasi file atau direktori disourceMachine. -
targetPath: Lokasi file atau direktori ditargetMachine. -
deploymentType: Deskripsi jenis penyebaran.LocalRemotedanRemoteRemotedidukung.LocalRemoteberarti menyalin dari sistem file lokal ke sistem jarak jauh yang ditentukan olehremoteMachineNamedalam launch.vs.json.RemoteRemoteberarti menyalin dari sistem build jarak jauh yang ditentukan dalam CMakeSettings.json ke berbagai sistem jarak jauh yang ditentukan dalam launch.vs.json. -
executable: Menunjukkan apakah file yang disebarkan dapat dieksekusi.
-
Menjalankan perintah kustom gdb
Visual Studio mendukung eksekusi perintah kustom gdb untuk berinteraksi dengan debugger yang mendasar secara langsung. Untuk informasi selengkapnya, lihat gdb lldb kustom.
Aktifkan pencatatan log
Aktifkan pengelogan MIEngine untuk melihat perintah apa yang dikirim ke gdb, output gdb apa yang dikembalikan, dan berapa lama setiap perintah mengambil.
Pelajari lebih lanjut
Jenis konfigurasi cppdbg
Opsi berikut dapat digunakan saat penelusuran kesalahan pada sistem jarak jauh atau WSL menggunakan cppdbg jenis konfigurasi. Di Visual Studio 2019 versi 16.6 atau yang lebih baru, jenis cppgdb konfigurasi disarankan.
name: Nama yang mudah diingat untuk mengidentifikasi konfigurasi di menu dropdown Item Startup.project: Menentukan jalur relatif ke file proyek. Biasanya, Anda tidak perlu mengubah nilai ini saat men-debug proyek CMake.projectTarget: Menentukan target CMake yang akan dipanggil saat membangun proyek. Visual Studio secara otomatis mengisi properti ini jika Anda memasukkan launch.vs.json dari Menu Debug atau Tampilan Target. Nilai ini harus cocok dengan nama target debug yang ada yang tercantum di menu dropdown Item Startup.args: Argumen baris perintah diteruskan saat memulai ke program yang sedang di-debug.processID: ID proses Linux untuk dilampirkan. Hanya digunakan saat melampirkan ke proses jarak jauh. Untuk informasi selengkapnya, lihat Memecahkan masalah melampirkan ke proses menggunakan GDB.program: Default ke"${debugInfo.fullTargetPath}". Jalur Unix ke aplikasi yang akan di-debug. Hanya diperlukan jika berbeda dari target yang dapat dieksekusi di lokasi build atau penyebaran.remoteMachineName: Default ke"${debugInfo.remoteMachineName}". Nama sistem jarak jauh yang menghosting program untuk di-debug. Hanya diperlukan jika berbeda dari sistem build. Harus memiliki entri yang ada di Pengelola Sambungan. Tekan Ctrl+Spasi untuk melihat daftar semua koneksi jarak jauh yang ada.cwd: Default ke"${debugInfo.defaultWorkingDirectory}". Jalur Unix penuh ke direktori pada sistem jarak jauh tempatprogramdijalankan. Direktori harus ada.environment: Variabel lingkungan tambahan yang diteruskan ke program yang sedang di-debug. Contohnya,"environment": [ { "name": "ENV1", "value": "envvalue1" }, { "name": "ENV2", "value": "envvalue2" } ]pipeArgs: Array argumen baris perintah yang diteruskan ke program pipa untuk mengonfigurasi koneksi. Program pipa digunakan untuk menyampaikan input/output standar antara Visual Studio dangdb. Sebagian besar array ini tidak perlu disesuaikan saat men-debug proyek CMake. Pengecualiannya adalah${debuggerCommand}, yang diluncurkangdbpada sistem jarak jauh. Ini dapat dimodifikasi untuk:Ekspor nilai VARIABEL lingkungan DISPLAY pada sistem Linux Anda. Dalam contoh berikut, nilai ini adalah
:1."pipeArgs": [ "/s", "${debugInfo.remoteMachineId}", "/p", "${debugInfo.parentProcessId}", "/c", "export DISPLAY=:1;${debuggerCommand}", "--tty=${debugInfo.tty}" ],Jalankan skrip sebelum eksekusi
gdb. Pastikan izin eksekusi diatur pada skrip Anda."pipeArgs": [ "/s", "${debugInfo.remoteMachineId}", "/p", "${debugInfo.parentProcessId}", "/c", "/path/to/script.sh;${debuggerCommand}", "--tty=${debugInfo.tty}" ],
stopOnEntry: Boolean yang menentukan apakah akan rusak segera setelah proses diluncurkan. Defaultnya adalah false.visualizerFile: File .natvis yang akan digunakan saat men-debug proses ini. Opsi ini tidak kompatibel dengangdbpencetakan yang cantik. AturshowDisplayStringjuga ketika Anda mengatur properti ini.showDisplayString: Boolean yang mengaktifkan string tampilan saatvisualizerFileditentukan. Mengatur opsi ini untuktruedapat menyebabkan performa yang lebih lambat selama penelusuran kesalahan.setupCommands: Satu atau beberapagdbperintah yang akan dijalankan, untuk menyiapkan debugger yang mendasar.miDebuggerPath: Jalur lengkap kegdb. Saat tidak ditentukan, Visual Studio mencari PATH terlebih dahulu untuk debugger.Terakhir, semua opsi penyebaran yang ditentukan untuk
cppgdbjenis konfigurasi juga dapat digunakan olehcppdbgjenis konfigurasi.
Debug menggunakan gdbserver
Anda dapat mengonfigurasi cppdbg konfigurasi untuk men-debug menggunakan gdbserver. Anda dapat menemukan detail selengkapnya dan konfigurasi peluncuran sampel di posting Blog Tim C++ Microsoft Debugging Linux CMake Projects dengan gdbserver.
Lihat juga
Proyek CMake di Visual Studio
Mengonfigurasi proyek CMake Linux
Menyambungkan ke komputer Linux jarak jauh Anda
Menyesuaikan pengaturan build CMake
Mengonfigurasi sesi penelusuran kesalahan CMake
Menyebarkan, menjalankan, dan men-debug proyek Linux Anda
Referensi konfigurasi CMake yang telah ditentukan sebelumnya