Szükséged lehet a CMake builded vagy a C++ kódod hibakeresésére. Mindkettővel foglalkozunk itt.
CMake hibakeresés
Először nézzük meg, hogyan hibakereshetünk egy CMakeLists vagy más CMake fájlt.
Változók nyomtatása
A CMake-ben a nyomtatási utasítások időtálló módszere így néz ki:
message(STATUS "MY_VARIABLE=${MY_VARIABLE}")
Egy beépített modul azonban még egyszerűbbé teszi ezt:
include(CMakePrintHelpers)cmake_print_variables(MY_VARIABLE)
Ha egy tulajdonságot akarunk kiírni, ez sokkal, de sokkal szebb! Ahelyett, hogy egyesével megkapnád a tulajdonságokat minden egyes célpontról (vagy más tulajdonságokkal rendelkező elemről, mint például SOURCES
, DIRECTORIES
, TESTS
vagy CACHE_ENTRIES
– a globális tulajdonságok valamiért úgy tűnik, hiányoznak), egyszerűen felsorolhatod őket, és közvetlenül kiírathatod:
cmake_print_properties( TARGETS my_target PROPERTIES POSITION_INDEPENDENT_CODE)
Futtatás nyomon követése
Ha szeretted volna pontosan megnézni, hogy mi történik a CMake fájlodban, és mikor? A --trace-source="filename"
funkció fantasztikus. Minden egyes sor lefutása a fájlban, amit megadsz, a képernyőre visszhangzik a futtatáskor, így pontosan követheted, hogy mi történik. Vannak kapcsolódó opciók is, de ezek hajlamosak eltemetni a kimenetbe.
Például:
cmake -S . -B build --trace-source=CMakeLists.txt
Ha hozzáadod a --trace-expand
-t, a változókat kibontja az értékeikre.
Building in debug mode
Egyetlen konfigurációjú generátoroknál a -DCMAKE_BUILD_TYPE=Debug
segítségével építheted a kódodat, hogy debugging flageket kapj. A többkonfigurációs generátoroknál, mint sok IDE-nél, az IDE-ben választhatod ki a konfigurációt. Erre a módra külön zászlók vannak (_DEBUG
-ra végződő változók, szemben a _RELEASE
-vel), valamint a generátor kifejezés értéke CONFIG:Debug
vagy CONFIG:Release
.
Mihelyt hibakeresési buildet készítesz, futtathatsz rajta egy hibakeresőt, például a gdb-t vagy az lldb-t.