Konfigurace ladicích relací CMake
Nativní podpora CMake je dostupná v sadě Visual Studio 2017 a novějších verzích. Pokud chcete zobrazit dokumentaci k těmto verzím, nastavte ovládací prvek selektoru verzí sady Visual Studio pro tento článek na Visual Studio 2017 nebo novější. Nachází se v horní části obsahu na této stránce.
Všechny cíle spustitelného souboru CMake se zobrazují v rozevíracím seznamu Po spuštění položky na panelu nástrojů. Vyberte jednu, která spustí ladicí relaci a spustí ladicí program.
V rozevíracím seznamu najdete seznam cílů ladění, ze které si můžete vybrat. Vybraná položka se zobrazí jako tlačítko přehrávání následované názvem vybraného cíle ladění, který se má spustit. V tomto příkladu je vybraný cíl ladění Hello World .exe.
Ladicí relaci můžete spustit také z Průzkumník řešení. Nejprve v okně Průzkumník řešení přepněte do zobrazení cílů CMake.
Zobrazí se Průzkumník řešení. Po kliknutí pravým tlačítkem myši na položku v zobrazení složky se otevřela nabídka, která zobrazuje možnosti, jako je Otevřít, Otevřít s, Porovnat s atd. Položka nabídky Přepnout do zobrazení cílů je zvýrazněná.
Potom klikněte pravým tlačítkem na spustitelný soubor a vyberte Ladit. Tento příkaz automaticky spustí ladění vybraného cíle na základě aktivní konfigurace.
Kliknutím pravým tlačítkem myši na cíl v zobrazení cílů CMake se otevřela nabídka s možnostmi, jako je Set as Startup item, Build, Clean All atd. Je zvýrazněná možnost nabídky Ladit.
Od sady Visual Studio 2022 verze 17.6 můžete také spustit ladicí relaci na CMakeLists.txt souboru. Uděláte to tak, že v souboru CMakeLists.txt nastavíte zarážku a v rozevíracím seznamu Projektu spustíte Příkaz Konfigurovat projekt s ladicím programem CMake.
Zobrazí se rozevírací seznam Projectu. Možnost nabídky Konfigurovat projekt s ladicím programem CMake je zvýrazněná.
Přizpůsobení nastavení ladicího programu
Nastavení ladicího programu můžete přizpůsobit pro jakýkoli spustitelný cíl CMake v projektu. Najdete je v konfiguračním souboru s názvem launch.vs.json, který se nachází ve složce v kořenovém .vs
adresáři projektu. Konfigurační soubor spuštění je užitečný ve většině scénářů ladění, protože můžete nakonfigurovat a uložit podrobnosti o nastavení ladění. Tento soubor obsahuje tři vstupní body:
- Ladicí nabídka: V hlavní nabídce vyberte Nastavení ladění > a spuštění pro ${activeDebugTarget} a přizpůsobte konfiguraci ladění specifickou pro váš aktivní cíl ladění. Pokud nemáte vybraný cíl ladění, tato možnost se zobrazí šedě.
- Zobrazení cílů: V Průzkumník řešení přejděte do zobrazení Cílů. Potom klikněte pravým tlačítkem na cíl ladění a vyberte Přidat konfiguraci ladění a přizpůsobte konfiguraci ladění specifickou pro vybraný cíl.
- Kořenový CMakeLists.txt: Klikněte pravým tlačítkem na kořenový CMakeLists.txt a vyberte Přidat konfiguraci ladění a otevřete dialogové okno Vybrat ladicí program . Dialogové okno umožňuje přidat libovolný typ konfigurace ladění, ale musíte ručně zadat cíl CMake, který se má vyvolat prostřednictvím
projectTarget
vlastnosti.
Soubor launch.vs.json můžete upravit a vytvořit konfigurace ladění pro libovolný počet cílů CMake. Když soubor uložíte, Visual Studio vytvoří položku pro každou novou konfiguraci v rozevíracím seznamu Po spuštění položky .
Referenční klíče v CMakeSettings.json
Pokud chcete odkazovat na libovolný klíč v souboru CMakeSettings.json , předpište cmake.
ho v launch.vs.json. Následující příklad ukazuje jednoduchý soubor launch.vs.json , který načítá hodnotu remoteCopySources
klíče v souboru CMakeSettings.json pro aktuálně vybranou konfiguraci:
{
"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}"]
}
]
}
Proměnné prostředí definované v CMakeSettings.json lze také použít v launch.vs.json pomocí syntaxe ${env.VARIABLE_NAME}
. V sadě Visual Studio 2019 verze 16.4 a novějších se cíle ladění automaticky spustí pomocí prostředí, které zadáte v CMakeSettings.json. Proměnnou prostředí můžete zrušit nastavením na hodnotu null.
Referenční informace k Launch.vs.json
Existuje mnoho launch.vs.json vlastností, které podporují všechny scénáře ladění. Následující vlastnosti jsou společné pro všechny konfigurace ladění, vzdálené i místní:
projectTarget
: Určuje cíl CMake, který se má vyvolat při sestavování projektu. Visual Studio tuto vlastnost automaticky naplní, pokud zadáte launch.vs.json z nabídky ladění nebo zobrazení cílů. Tato hodnota se musí shodovat s názvem existujícího cíle ladění uvedeného v rozevíracím seznamu Po spuštění položky .env
: Další proměnné prostředí, které se mají přidat pomocí syntaxe:"env": { "DEBUG_LOGGING_LEVEL": "trace;info", "ENABLE_TRACING": "true" }
args
: Argumenty příkazového řádku předané programu k ladění.
referenční informace k Launch.vs.json pro vzdálené projekty a WSL
V sadě Visual Studio 2019 verze 16.6 jsme přidali novou konfiguraci type: cppgdb
ladění pro zjednodušení ladění ve vzdálených systémech a WSL. Staré konfigurace ladění jsou stále podporovány type: cppdbg
.
Typ konfigurace cppgdb
name
: Popisný název pro identifikaci konfigurace v rozevíracím seznamu Po spuštění položky .project
: Určuje relativní cestu k souboru projektu. Při ladění projektu CMake obvykle nemusíte tuto cestu měnit.projectTarget
: Určuje cíl CMake, který se má vyvolat při sestavování projektu. Visual Studio tuto vlastnost automaticky naplní, pokud zadáte launch.vs.json z nabídky ladění nebo zobrazení cílů. Tato cílová hodnota se musí shodovat s názvem existujícího cíle ladění uvedeného v rozevíracím seznamu Po spuštění položky .debuggerConfiguration
: Určuje, která sada výchozích hodnot ladění se má použít. V sadě Visual Studio 2019 verze 16.6 jegdb
jedinou platnou možností . Visual Studio 2019 verze 16.7 nebo novější podporujegdbserver
také .args
: Argumenty příkazového řádku předané při spuštění programu, který je laděný.env
: Další proměnné prostředí předané programu, který je laděný. Například{"DISPLAY": "0.0"}
.processID
: ID procesu Linuxu, ke které se má připojit. Používá se pouze při připojování ke vzdálenému procesu. Další informace najdete v tématu Řešení potíží s připojením k procesům pomocí GDB.
Další možnosti gdb
konfigurace
program
: Výchozí hodnota"${debugInfo.fullTargetPath}"
je . Cesta unixové aplikace k ladění. Vyžaduje se pouze v případě, že se liší od cílového spustitelného souboru v umístění sestavení nebo nasazení.remoteMachineName
: Výchozí hodnota"${debugInfo.remoteMachineName}"
je . Název vzdáleného systému, který je hostitelem programu pro ladění. Vyžaduje se pouze v případě, že se liší od systému sestavení. Musí mít existující položku v Správce připojení. Stisknutím kombinace kláves Ctrl+Mezerník zobrazíte seznam všech existujících vzdálených připojení.cwd
: Výchozí hodnota"${debugInfo.defaultWorkingDirectory}"
je . Cesta unixu k adresáři ve vzdáleném systému, kdeprogram
je spuštěna. Adresář musí existovat.gdbpath
: Výchozí hodnota/usr/bin/gdb
je . Úplná cesta unixugdb
k použitému k ladění. Vyžaduje se pouze v případě, že používáte vlastní verzi souborugdb
.preDebugCommand
: Příkaz Linuxu, který se má spustit bezprostředně před vyvolánímgdb
.gdb
se nespustí, dokud se příkaz nedokončí. Můžete použít možnost spustit skript před spuštěnímgdb
.
Další možnosti povolené s gdbserver
konfigurací (16.7 nebo novější)
program
: Výchozí hodnota"${debugInfo.fullTargetPath}"
je . Cesta unixové aplikace k ladění. Vyžaduje se pouze v případě, že se liší od cílového spustitelného souboru v umístění sestavení nebo nasazení.Tip
Nasazení se zatím nepodporuje pro místní scénáře křížové kompilace. Pokud křížově kompilujete ve Windows (například pomocí křížového kompilátoru ve Windows pro sestavení spustitelného souboru ARM pro Linux), budete muset před laděním
program
ručně zkopírovat binární soubor do umístění určeného na vzdáleném počítači ARM.remoteMachineName
: Výchozí hodnota"${debugInfo.remoteMachineName}"
je . Název vzdáleného systému, který je hostitelem programu pro ladění. Vyžaduje se pouze v případě, že se liší od systému sestavení. Musí mít existující položku v Správce připojení. Stisknutím kombinace kláves Ctrl+Mezerník zobrazíte seznam všech existujících vzdálených připojení.cwd
: Výchozí hodnota"${debugInfo.defaultWorkingDirectory}"
je . Úplná cesta unixu k adresáři ve vzdáleném systému, kdeprogram
je spuštěna. Adresář musí existovat.gdbPath
: Výchozí hodnota${debugInfo.vsInstalledGdb}
je . Úplná cesta windows kgdb
použitému k ladění. Výchozí hodnota je nainstalovanágdb
s vývojem pro Linux s úlohou C/C++.gdbserverPath
: Výchozí hodnotausr/bin/gdbserver
je . Úplná cesta unixugdbserver
k použitému k ladění.preDebugCommand
: Příkaz Linuxu, který se má spustit bezprostředně před spuštěnímgdbserver
.gdbserver
se nespustí, dokud se příkaz nedokončí.
Možnosti nasazení
Pomocí následujících možností oddělte svůj buildový počítač (definovaný v CMakeSettings.json) od vzdáleného ladicího počítače.
remoteMachineName
: Vzdálený ladicí počítač. Vyžaduje se pouze v případě, že se liší od počítače sestavení. Musí mít existující položku v Správce připojení. Stisknutím kombinace kláves Ctrl+Mezerník zobrazíte seznam všech existujících vzdálených připojení.disableDeploy
: Výchozí hodnotafalse
je . Určuje, jestli je zakázané oddělení sestavení nebo ladění. Kdyžfalse
tato možnost umožňuje sestavení a ladění na dvou samostatných počítačích.deployDirectory
: Úplná cesta unixu k adresáři, doremoteMachineName
kterého se spustitelný soubor zkopíruje.deploy
: Pole upřesňujících nastavení nasazení. Tato nastavení je potřeba nakonfigurovat jenom v případě, že chcete podrobnější kontrolu nad procesem nasazení. Ve výchozím nastavení se do vzdáleného ladicího počítače nasadí jenom soubory potřebné pro proces ladění.sourceMachine
: Počítač, ze kterého se soubor nebo adresář zkopíruje. Stisknutím kombinace kláves Ctrl+Mezerník zobrazíte seznam všech vzdálených připojení uložených v Správce připojení. Při vytváření nativně ve WSL se tato možnost ignoruje.targetMachine
: Počítač, do kterého se soubor nebo adresář zkopíruje. Stisknutím kombinace kláves Ctrl+Mezerník zobrazíte seznam všech vzdálených připojení uložených v Správce připojení.sourcePath
: Umístění souboru nebo adresáře na .sourceMachine
targetPath
: Umístění souboru nebo adresáře na .targetMachine
deploymentType
: Popis typu nasazení.LocalRemote
aRemoteRemote
jsou podporovány.LocalRemote
znamená kopírování z místního systému souborů do vzdáleného systému určenéhoremoteMachineName
v launch.vs.json.RemoteRemote
znamená kopírování ze vzdáleného systému sestavení určeného v CMakeSettings.json do jiného vzdáleného systému určeného v launch.vs.json.executable
: Určuje, jestli je nasazený soubor spustitelný.
Spouštění vlastních gdb
příkazů
Visual Studio podporuje spouštění vlastních gdb
příkazů pro přímou interakci s podkladovým ladicím programem. Další informace naleznete v tématu Spouštění vlastních gdb
příkazů lldb.
Povolit protokolování
Povolte protokolování MIEngine, abyste zjistili, na jaké příkazy se odesílají gdb
, do jakého výstupu gdb
se vrátí a jak dlouho každý příkaz trvá. Další informace
Typ konfigurace cppdbg
Následující možnosti lze použít při ladění ve vzdáleném systému nebo WSL pomocí cppdbg
typu konfigurace. V sadě Visual Studio 2019 verze 16.6 nebo novější se doporučuje typ cppgdb
konfigurace.
name
: Popisný název pro identifikaci konfigurace v rozevíracím seznamu Po spuštění položky .project
: Určuje relativní cestu k souboru projektu. Při ladění projektu CMake obvykle tuto hodnotu nemusíte měnit.projectTarget
: Určuje cíl CMake, který se má vyvolat při sestavování projektu. Visual Studio tuto vlastnost automaticky naplní, pokud zadáte launch.vs.json z nabídky ladění nebo zobrazení cílů. Tato hodnota se musí shodovat s názvem existujícího cíle ladění uvedeného v rozevíracím seznamu Po spuštění položky .args
: Argumenty příkazového řádku předané při spuštění programu, který je laděný.processID
: ID procesu Linuxu, ke které se má připojit. Používá se pouze při připojování ke vzdálenému procesu. Další informace najdete v tématu Řešení potíží s připojením k procesům pomocí GDB.program
: Výchozí hodnota"${debugInfo.fullTargetPath}"
je . Cesta unixové aplikace k ladění. Vyžaduje se pouze v případě, že se liší od cílového spustitelného souboru v umístění sestavení nebo nasazení.remoteMachineName
: Výchozí hodnota"${debugInfo.remoteMachineName}"
je . Název vzdáleného systému, který je hostitelem programu pro ladění. Vyžaduje se pouze v případě, že se liší od systému sestavení. Musí mít existující položku v Správce připojení. Stisknutím kombinace kláves Ctrl+Mezerník zobrazíte seznam všech existujících vzdálených připojení.cwd
: Výchozí hodnota"${debugInfo.defaultWorkingDirectory}"
je . Úplná cesta unixu k adresáři ve vzdáleném systému, kdeprogram
je spuštěna. Adresář musí existovat.environment
: Další proměnné prostředí předané programu, který je laděný. Příklad:"environment": [ { "name": "ENV1", "value": "envvalue1" }, { "name": "ENV2", "value": "envvalue2" } ]
pipeArgs
: Pole argumentů příkazového řádku předaných programu kanálu ke konfiguraci připojení. Program kanálu se používá k předávání standardního vstupu a výstupu mezi sadou Visual Studio agdb
. Většina tohoto pole se při ladění projektů CMake nemusí přizpůsobovat . Výjimkou je${debuggerCommand}
, který se spustígdb
ve vzdáleném systému. Dá se upravit na:Exportujte hodnotu proměnné prostředí DISPLAY v systému Linux. V následujícím příkladu je
:1
tato hodnota ."pipeArgs": [ "/s", "${debugInfo.remoteMachineId}", "/p", "${debugInfo.parentProcessId}", "/c", "export DISPLAY=:1;${debuggerCommand}", "--tty=${debugInfo.tty}" ],
Před spuštěním
gdb
skriptu spusťte skript . Ujistěte se, že jsou ve vašem skriptu nastavená oprávnění ke spuštění."pipeArgs": [ "/s", "${debugInfo.remoteMachineId}", "/p", "${debugInfo.parentProcessId}", "/c", "/path/to/script.sh;${debuggerCommand}", "--tty=${debugInfo.tty}" ],
stopOnEntry
: Logická hodnota, která určuje, jestli se má proces přerušit, jakmile se proces spustí. Výchozí hodnotou je hodnota false.visualizerFile
: Soubor .natvis, který se má použít při ladění tohoto procesu. Tato možnost není kompatibilní s pěkným tiskemgdb
. Tato vlastnost je také nastavenashowDisplayString
při nastavování této vlastnosti.showDisplayString
: Logická hodnota, která umožňuje zobrazovaný řetězec přivisualizerFile
zadání. Nastavením této možnostitrue
můžete během ladění způsobit pomalejší výkon.setupCommands
: Jeden nebo vícegdb
příkazů, které se mají provést, pro nastavení základního ladicího programu.miDebuggerPath
: Úplná cesta kgdb
. Pokud není zadaný, Visual Studio nejprve vyhledá ladicí program PATH.Nakonec můžete použít
cppdbg
také všechny možnosti nasazení definované procppgdb
typ konfigurace.
Ladění pomocí gdbserver
Konfiguraci můžete nakonfigurovat cppdbg
pro ladění pomocí gdbserver
. Další podrobnosti a ukázkovou konfiguraci spuštění najdete v blogovém příspěvku týmu Microsoft C++ o ladění projektů CMake Linuxu pomocí gdbserver
.