Saatat joutua debuggaamaan CMake-rakentamistasi tai debuggaamaan C++-koodiasi. Molempia käsitellään tässä.
CMaken debuggaus
Katsotaan ensin tapoja debugata CMakeLists- tai muu CMake-tiedosto.
Muuttujien tulostaminen
Aika kunnioitettu tapa tulostuslauseiden käyttämiseen näyttää CMakessa tältä:
message(STATUS "MY_VARIABLE=${MY_VARIABLE}")
Mutta sisäänrakennettu moduuli tekee tästä vieläkin helpompaa:
include(CMakePrintHelpers)cmake_print_variables(MY_VARIABLE)
Jos haluat tulostaa ominaisuuden, tämä on paljon, paljon mukavampaa! Sen sijaan, että saisit ominaisuudet yksitellen jokaisesta kohteesta (tai muusta kohteesta, jolla on ominaisuuksia, kuten SOURCES
, DIRECTORIES
, TESTS
tai CACHE_ENTRIES
– globaalit ominaisuudet näyttävät jostain syystä puuttuvan), voit yksinkertaisesti listata ne ja saada ne tulostettua suoraan:
cmake_print_properties( TARGETS my_target PROPERTIES POSITION_INDEPENDENT_CODE)
Tracing a run
Oletko halunnut tarkkailla tarkalleen, mitä CMake-tiedostossasi tapahtuu ja milloin? --trace-source="filename"
-ominaisuus on fantastinen. Jokainen antamasi tiedostossa ajettu rivi kaikuu näytölle, kun tiedosto ajetaan, jolloin voit seurata tarkalleen, mitä tapahtuu. Myös siihen liittyviä vaihtoehtoja on olemassa, mutta niillä on taipumus haudata sinut tulosteisiin.
Esimerkiksi:
cmake -S . -B build --trace-source=CMakeLists.txt
Jos lisäät --trace-expand
, muuttujat laajennetaan niiden arvoihin.
Koodin rakentaminen debug-tilassa
Yksittäisten konfiguraatioiden generaattoreissa voit rakentaa koodisi -DCMAKE_BUILD_TYPE=Debug
:lla saadaksesi debuggausliput. Monikonfiguraatiogeneraattoreissa, kuten monissa IDE-ohjelmissa, voit valita konfiguraation IDE:ssä. Tätä tilaa varten on erilliset liput (muuttujat, jotka päättyvät _DEBUG
:een toisin kuin _RELEASE
), sekä generaattorin lausekkeen arvo CONFIG:Debug
tai CONFIG:Release
.
Kun teet debug-rakentamisen, voit ajaa debuggerin, kuten gdb:n tai lldb:n, sillä.