Potresti aver bisogno di fare il debug della tua compilazione CMake, o il debug del tuo codice C++. Entrambi sono coperti qui.
Il debug di CMake
Primo, guardiamo i modi per fare il debug di una CMakeLists o di altri file CMake.
Stampa delle variabili
L’onorato metodo delle istruzioni di stampa assomiglia a questo in CMake:
message(STATUS "MY_VARIABLE=${MY_VARIABLE}")
Tuttavia, un modulo integrato lo rende ancora più facile:
include(CMakePrintHelpers)cmake_print_variables(MY_VARIABLE)
Se vuoi stampare una proprietà, questo è molto, molto più bello! Invece di ottenere le proprietà una per una di ogni target (o altro elemento con proprietà, come SOURCES
, DIRECTORIES
, TESTS
, o CACHE_ENTRIES
– le proprietà globali sembrano mancare per qualche motivo), puoi semplicemente elencarle e farle stampare direttamente:
cmake_print_properties( TARGETS my_target PROPERTIES POSITION_INDEPENDENT_CODE)
Tracciare un’esecuzione
Hai voluto guardare esattamente cosa succede nel tuo file CMake, e quando? La funzione --trace-source="filename"
è fantastica. Ogni linea eseguita nel file che hai dato sarà riecheggiata sullo schermo quando viene eseguita, permettendoti di seguire esattamente cosa sta succedendo. Ci sono anche opzioni correlate, ma tendono a seppellirti nell’output.
Per esempio:
cmake -S . -B build --trace-source=CMakeLists.txt
Se aggiungi --trace-expand
, le variabili saranno espanse nei loro valori.
Costruire in modalità debug
Per i generatori a configurazione singola, puoi costruire il tuo codice con -DCMAKE_BUILD_TYPE=Debug
per ottenere i flag di debug. Nei generatori multi-configurazione, come molti IDE, puoi scegliere la configurazione nell’IDE. Ci sono bandiere distinte per questa modalità (variabili che terminano in _DEBUG
al contrario di _RELEASE
), così come un valore di espressione del generatore CONFIG:Debug
o CONFIG:Release
.
Una volta fatta una build di debug, è possibile eseguire un debugger, come gdb o lldb su di essa.