Проследяване на чужда програма или приложение за Android с gdb - зареждане на символи?

Опитвам се да използвам gdb за разследване на приложение, за което нямам източници.

С помощта на инструментите, предоставени от Android NDK, вече разбрах как да стартирам gdbserver на устройството, след това да стартирам правилния gdbclient на компютъра и как да свържа и двете чрез отдалечен режим.

Проблемът сега е, че ако се опитам да задам точка на прекъсване на метод като fopen, който принадлежи към стандартна библиотека като cstdlib, gdb отказва да го направи, тъй като пропуска символните файлове.

Къде мога да намеря правилните символни файлове (конкретен поддиректор на Android NDK?) и как да ги заредя в gdb, когато се изпълнява в отдалечен режим (gdb команди)?

Компютърната платформа е Windows, а Android е Galaxy Nexus телефон с версия 4.1.2


person Robert    schedule 19.10.2012    source източник
comment
Опитайте се да поставите точка на прекъсване на нещо от bionic. Или Log.d.   -  person Shark    schedule 25.10.2012
comment
Ако просто се нуждаете от изходния код и ако имате или желаете да получите достъп до apk (чрез руутване), можете да го разопаковате, за да видите изходния код.   -  person Phil    schedule 28.10.2012


Отговори (1)


От известно време не съм правил нищо с gdb, но вашият въпрос привлече вниманието ми. Нямам инсталиран NDK, така че не мога да говоря за местоположението на файловете. Но намерих информация за зареждането на липсващи символи.

Този урок изглежда донякъде като това, което се опитвате да направите: http://marcioandreyoliveira.blogspot.com/2008/03/how-to-debug-striped-programs-with-gdb.html

Но предполага, че сте изградили своите двоични файлове и можете да изградите такъв със символи. Не съм сигурен дали ще работи да зареди само cstdlib и т.н., но е начало.

person Chris Miller    schedule 28.10.2012
comment
Съжалявам, но отговорът ви не беше много полезен. Както написах във въпроса си, това е чуждо приложение, следователно не изграждам нищо и следователно не мога просто да възстановя приложението. Освен това публикацията не отговаря откъде да вземете файловете със символи. - person Robert; 29.10.2012
comment
Съжалявам, предполагам, че трябваше да е коментар, а не отговор. Вие попитахте и как да ги заредя в gdb, когато се изпълнява в отдалечен режим (gdb команди). - person Chris Miller; 29.10.2012