Родной для Android. Как мой собственный путь к библиотеке не указан в GetMemoryRegions при отладке с использованием lldbAndroid

Форум для тех, кто программирует под Android
Anonymous
Родной для Android. Как мой собственный путь к библиотеке не указан в GetMemoryRegions при отладке с использованием lldb

Сообщение Anonymous »

Я хочу отладить свою собственную библиотеку на низком уровне с помощью lldb. Для этого мне нужно знать базовый адрес целевого общего объекта. Я написал скрипт для дампа всех областей памяти, но в списке результатов не было записи об этом, хотя код по-прежнему выполнялся нормально.
Я попробовал 2 вещи:
  • поместил бесконечный цикл, чтобы общий объект оставался «живым» в памяти процесса, когда я прерывал процесс в клиенте lldb:

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

jobject myNativeMethod3(JNIEnv *env, jobject thiz, jobject arrayObj) {
LOGI("Reading string array");

struct timespec ts = {2, 0}; // 2 second sleep
while(true){
LOGI("waiting for lldb");
nanosleep(&ts, nullptr);
}
}
  • сохранять каждую запись в файл:

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

def get_memory_regions(debugger, command, result, internal_dict):
target = debugger.GetSelectedTarget()
process = target.GetProcess()
if not process:
print("No process available.")
return

region_list = process.GetMemoryRegions()
print(f"Total regions: {region_list.GetSize()}")
with open('regions.txt', 'w') as f:
for i in range(region_list.GetSize()):
region_info = lldb.SBMemoryRegionInfo()
if region_list.GetMemoryRegionAtIndex(i, region_info):
name = region_info.GetName()
f.write(f"{name}\n")
но имя целевого общего объекта не появилось в списке.
Я увидел запись с именем /data/app/~~v4slxMbRQy4YqeFeTO3Rig ==/com.example.testnative-Lkf80ctXP4dWS-iV201AwQ==/base.apk появился, но я также ожидаю, что библиотека будет с именем libtestnative.so в списке.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ions-resul

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