2017-01-23 3 views
0

Ich verwende Clion IDe, mit gcc/g ++ & gdb für Debugger.Fehler beim Lesen Variable: Konnte die Frame-Basis nicht finden

In der CMakeList.txt, habe ich die folgenden Compiler-Optionen festgelegt. set(CMAKE_CXX_FLAGS -std=c++11 -fopenmp -fPIC -O0 -gdwarf-2 -finline-functions)

Ich kann die Variablenwerte in main(), aber keine anderen Klassen anzeigen. Es zeigt den Fehler für alle Methoden, die direkt oder verschachtelt aus dem Hauptprogramm aufgerufen werden:

<error reading variable: Could not find the frame base for xxxxclass::xxxMethod> Jeder Zeiger wäre hilfreich.

+0

Versuchen -g statt -gdwarf-2 –

Antwort

1

Mehrere Probleme, die ich sehe:

  1. Beschränken Sie sich nicht auf Zwerg v2 (-gdwarf-2), es sei denn Ihr Debugger nicht neue Zwerg Revisionen verarbeiten kann.
  2. Versuchen Sie so weit wie möglich, Optimierungen zu deaktivieren (-O0 sollte jedoch -finline-functions korrekt deaktivieren). Beachten Sie jedoch, dass neuere Zwerg-Revisionen Optimierungen besser behandeln und verfolgen können.
  3. Versuchen Sie, so weit wie möglich Ihre Debug-Informationen ausführlich zu machen. Die Option -g verwendet ein optionales Argument, das standardmäßig 2 ist, dessen Maximalwert jedoch 3 sein kann. Es werden dann einige Debugger-Funktionen wie das Debugging von CPP-Makros freigeschaltet.
  4. Aktivieren Sie die GDB-Debuginformationserweiterungen mit -ggdb.
  5. Wenn es sich immer noch beschweren, müssen Sie möglicherweise explizit zusätzliche gcc debugging options verwenden. Aber es wird normalerweise nur benötigt, wenn Sie ein optimiertes Programm debuggen.

Also, versuchen Sie es mit: set(CMAKE_CXX_FLAGS -std=c++11 -fopenmp -fPIC -O0 -g3 -ggdb)

Verwandte Themen