Backtrace остановлен: предыдущий кадр идентичен этому кадру (поврежденный стек?) Во время проекта gdb android c

1

Я построил проект через ndk, но, к сожалению, когда он запускается в эмуляторе Android, он выходит из строя со следующей подсказкой:

[1] + Stopped (signal)        ./secfs secfs-client /data/fuse_dir /data/pwrite/test_11

И затем я последовал за учебником, чтобы отладить мой проект, но он пришел к файлам сборки. И мне нелегко понять файлы Ассамблеи. Итак, я пришел, чтобы использовать основной дамп. Но, когда система обрабатывает основной файл, и я пытаюсь прочитать основной файл с помощью gdb, он запрашивает следующее, и gdb, похоже, не работает с ним:

 Core was generated by './secfs secfs-client /data/fuse_dir /data/pwrite/test_11'.
Program terminated with signal 11, Segmentation fault.
#0  0x4001e7f0 in ?? ()
(gdb) bt
#0  0x4001e7f0 in ?? ()
#1  0x4001fdfa in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

В конце концов, я понятия не имею, что делать дальше, любая идея для этого? благодаря

Теги:
android-ndk
gdb
gdbserver

1 ответ

0

Используйте (грубую) силу. Записывайте записи журнала по всему вашему коду и смотрите, где он останавливается. Таким образом, у вас будет представление о том, какая часть вашего кода вызывает SEGFAULT. Запустите приложение несколько раз и посмотрите, что такое последний оператор журнала. Не предполагайте, что код, следующий за последним оператором журнала, является кодом нарушения. Иногда некоторые записи журнала не отображаются в журнале. Я думаю, что это из-за внутренней буферизации текста. Вот почему вы должны запускать код несколько раз.

  • 0
    Я действительно хочу, чтобы это не был хороший совет. Но отладка нативного кода на Android по-прежнему является изнурительной задачей, даже на полпути к 2013 году. Поэтому, потратив пару часов (снова) попыток заставить его работать, я, вероятно, прибегну к рассылке спама в логах.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню