Skip to content
Menu
CDhistory
CDhistory

Debugging

Posted on November 20, 2021 by admin

Es kann sein, dass Sie Ihren CMake-Build debuggen müssen oder Ihren C++-Code debuggen wollen. Beides wird hier behandelt.

  • CMake Debugging
  • Drucken von Variablen
  • Verfolgung eines Laufs
  • Erstellung im Debug-Modus

CMake Debugging

Zunächst schauen wir uns an, wie man eine CMakeLists oder eine andere CMake-Datei debuggen kann.

Drucken von Variablen

Die altbewährte Methode der Druckanweisungen sieht in CMake so aus:

message(STATUS "MY_VARIABLE=${MY_VARIABLE}")

Ein eingebautes Modul macht dies jedoch noch einfacher:

include(CMakePrintHelpers)cmake_print_variables(MY_VARIABLE)

Wenn man eine Eigenschaft ausdrucken will, ist das viel, viel schöner! Anstatt die Eigenschaften eines jeden Ziels (oder eines anderen Elements mit Eigenschaften, wie SOURCES, DIRECTORIES, TESTS oder CACHE_ENTRIES – globale Eigenschaften scheinen aus irgendeinem Grund zu fehlen) einzeln abzurufen, kann man sie einfach auflisten und direkt ausdrucken lassen:

cmake_print_properties( TARGETS my_target PROPERTIES POSITION_INDEPENDENT_CODE)

Verfolgung eines Laufs

Wollten Sie schon immer mal genau beobachten, was in Ihrer CMake-Datei passiert und wann? Die Funktion --trace-source="filename" ist fantastisch. Jede Zeile in der Datei, die Sie angeben, wird auf dem Bildschirm wiedergegeben, wenn sie ausgeführt wird, so dass Sie genau verfolgen können, was passiert. Es gibt auch verwandte Optionen, aber die neigen dazu, dich in der Ausgabe zu begraben.

Zum Beispiel:

cmake -S . -B build --trace-source=CMakeLists.txt

Wenn du --trace-expand hinzufügst, werden die Variablen in ihre Werte expandiert.

Erstellung im Debug-Modus

Für Generatoren mit einer Konfiguration kannst du deinen Code mit -DCMAKE_BUILD_TYPE=Debug erstellen, um Debugging-Flags zu erhalten. Bei Multikonfigurations-Generatoren, wie bei vielen IDEs, können Sie die Konfiguration in der IDE auswählen. Es gibt verschiedene Flags für diesen Modus (Variablen, die auf _DEBUG enden, im Gegensatz zu _RELEASE), sowie einen Generator-Ausdruckswert CONFIG:Debug oder CONFIG:Release.

Nachdem Sie einen Debug-Build erstellt haben, können Sie einen Debugger, wie gdb oder lldb, darauf laufen lassen.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Neueste Beiträge

  • Acela ist zurück: NYC oder Boston für 99 Dollar
  • OMIM Eintrag – # 608363 – CHROMOSOM 22q11.2 DUPLIKATIONSSYNDROM
  • Kate Albrechts Eltern – Erfahren Sie mehr über ihren Vater Chris Albrecht und ihre Mutter Annie Albrecht
  • Temple Fork Outfitters
  • Burr (Roman)

Archive

  • Februar 2022
  • Januar 2022
  • Dezember 2021
  • November 2021
  • Oktober 2021
  • September 2021
  • August 2021
  • Juli 2021
  • Juni 2021
  • Mai 2021
  • April 2021
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語
©2022 CDhistory | Powered by WordPress & Superb Themes