Есть ли в Android Studio средство просмотра памяти NDK?

Я переношу код библиотеки C для Windows в Android

Когда я создаю динамически выделяемый массив в коде NDK C, окно просмотра переменных показывает мне только адрес первого элемента и значение первого элемента.

Я хочу видеть все элементы массива в памяти телефона

Есть ли средство просмотра памяти или что-то подобное для NDK в студии Android?

Или как вариант можно сделать какой-нибудь дамп памяти в консоли lldb?


person user13267    schedule 17.04.2019    source источник


Ответы (1)


Вы можете распечатать динамически выделенный массив целых чисел с помощью команды LLDB print (сокращенно p), как показано ниже: (изменить размер и тип в зависимости от вашего случая)

(lldb) print *(int (*)[5])foo2

Это даст вывод все элементы массива int. Смотрите скриншот ниже:

введите здесь описание изображения

Для стиля графического интерфейса вы можете выбрать вкладку Переменные и добавить новые часы, используя оператор, аналогичный описанному выше в командной строке, см. снимок экрана ниже:

введите здесь описание изображения

А потом:

введите здесь описание изображения

Разверните наблюдаемое заявление, вы увидите все элементы, как показано ниже:

введите здесь описание изображения


Изменить №1

Использование команды parray проще:

(lldb) parray 5 foo2
(int *) $5 = 0x000072e200e2da70 {
  (int) [0] = 20
  (int) [1] = 8
  (int) [2] = 55
  (int) [3] = 6
  (int) [4] = 52
}
person shizhen    schedule 17.04.2019
comment
большое тебе спасибо. Я сделал что-то подобное, когда использовал lldb в xcode (ios), и я чувствую, что со средством просмотра памяти все было бы намного удобнее. Знаете ли вы, есть ли в Android Studio средство просмотра памяти? В основном я хочу иметь возможность вводить адрес памяти, а затем видеть все содержимое памяти, начиная с этого момента (например, в визуальной студии) - person user13267; 17.04.2019
comment
Кроме того, знаете ли вы, можно ли запустить интерпретатор Python в консоли lldb? Я набрал «скрипт» в консоли, но это ничего не сделало. На веб-сайте lldb говорится, что это должно запустить интерпретатор Python: lldb.llvm.org/python-reference.html< /а> - person user13267; 17.04.2019
comment
@ user13267, см. мой обновленный ответ для GUI «средство просмотра памяти» - person shizhen; 17.04.2019
comment
@ user13267, здесь github.com/llvm/ llvm-project/blob/master/lldb/examples/ — это пример скрипта Python, но, честно говоря, я еще не пробовал. - person shizhen; 17.04.2019
comment
@ user13267, я ответил на ваш вопрос? - person shizhen; 23.04.2019
comment
вроде, все еще не совсем то, на что я надеялся, но очень полезно, тем не менее - person user13267; 23.04.2019