Backtrace_symbols может видеть весь стек, но gdb backtrace не можетC++

Программы на C++. Форум разработчиков
Anonymous
Backtrace_symbols может видеть весь стек, но gdb backtrace не может

Сообщение Anonymous »

У меня есть два отдельных проекта C++ CMake: библиотека и приложение. Оба созданы в режиме отладки с помощью

Код: Выделить всё

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3 -O0 -fno-inline -fno-omit-frame-pointer -fasynchronous-unwind-tables -funwind-tables")
и по мере выполнения программы в gdb/CLion я вижу текущий кадр стека и указатель this. Две проблемы:
  • иногда локальные переменные не отображаются в поле «Потоки и переменные» CLion, хотя, если я помещаю имя локальной переменной в поле «Оценить выражение», это дает правильное значение.
  • текущий кадр стека виден, но когда я ввожу новую функцию, предыдущий кадр стека удаляется из стека
Вторая проблема может быть связана с пересечением границы библиотеки/приложения.

Код: Выделить всё

backtrace_symbols
может видеть весь стек, но команда backtrace gdb не может.

Подробнее здесь: https://stackoverflow.com/questions/797 ... trace-cant

Вернуться в «C++»