разматывание стека с помощью unwind.h - PullRequest
1 голос
/ 22 октября 2011

Я хочу сделать разматывание стека с помощью gcc. Я не могу найти пример кода, который показывает мне, как это сделать.

Я пытался следовать инструкциям с этого сайта , но я понял, что unwind.h, который использует мой gcc, отличается. например вместо unw_word_t у меня есть _Unwind_Word. Я не знаю, что мне следует использовать вместо unw_getcontext() и unw_init_local().

my unwind.h похож на http://www.opensource.apple.com/source/gcc/gcc-5482/gcc/unwind.h

Может кто-нибудь дать мне ссылку на пример кода для использования этой библиотеки?

1 Ответ

0 голосов
/ 13 марта 2014

Пример, который вы пытаетесь использовать, относится к "libunwind", но ваш заголовок принадлежит "libcorkscrew".Если вам нужен хороший пример того, как использовать библиотеку «развернуть», вы можете взглянуть на проект Android Open Source, он реализовал класс CallStack, который реализует всю необходимую функциональность для разных архитектур.Именно для вашего случая я бы порекомендовал вам посмотреть файл:

YOUR_PROJECT_FOLDER / system / core / libcorkscrew / backtrace.c

В этом файле, например, функция "unwind_backtrace" использует "_Unwind_Backtrace"из библиотеки libcorkscrew.Используя этот файл, вы можете легко адаптировать свой пример.

...