Art::StackVisitor::WalkStack ломается/сбой во время отладкиAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Art::StackVisitor::WalkStack ломается/сбой во время отладки

Сообщение Anonymous »

Я использую Android Studio Giraffe | 2022.3.1 Patch 2 (вероятно, следует обновить) и возникают досадные сбои в работе отладчика в приложении (дизассемблирование) любым из методов
art::StackVisitor::WalkStack
art::jit::JitCodeCache::GetJniStubCode
Базовая кодовая база довольно велика и в основном извлекает кадры uvc с использованием библиотеки saki4510t/UVCCamera с устройств веб-камеры, а затем манипулирует ими. эти UVC-фреймы внутри пользовательской части jni C++, а затем переносятся в Java-часть, чтобы наконец отобразить изображения внутри изображения.
Конечно, здесь многое может пойти не так, но эта конструкция до сих пор работала хорошо. Однако исследования внутри базы кода с использованием встроенного + Java-отладчика стали невозможными из-за сбоев в указанных художественных методах.
Я попытался разобрать небольшой пример, чтобы воспроизвести сбой. Пример: модифицированный собственный проект шаблона C++, выбранный из галереи Android Studio:

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

public class MainActivityextends AppCompatActivity {
// Used to load the 'jnibugdemo' library on application startup.
static {
System.loadLibrary("jnibugdemo");
}

private Thread MainProcess;
boolean MainProcessON;
private ActivityMainBindingbinding;
MainProcessClass currentMainProcessClass;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
// Example of a call to a native method
TextView tv = binding.sampleText;
tv.setText(stringFromJNI());
MainProcessON = false;
}
@Override
public void onResume() {
super.onResume();
if( !MainProcessON) {
MainProcessON = true;
currentMainProcessClass= new MainProcessClass();
MainProcess= new Thread(currentMainProcessClass);
MainProcess.start();
}
}

private class MainProcessClassimplements Runnable {
Bitmap.Config currentScreen_conf;
Bitmap currentScreen;
int width,height;

MainProcessClass() {
width = 640;
height = 480;
currentScreen_conf= Bitmap.Config.ARGB_8888;
currentScreen= Bitmap.createBitmap(width, height,currentScreen_conf);

}

public void run() {
int nop;
while (MainProcessON) {
nop = 1;
try {
sleep(30);
} catch (InterruptedException ex) {
throw new RuntimeException(ex);
}
}
}
}
public native String stringFromJNI();
}
Если запустить это на реальном устройстве с помощью отладчика, через несколько секунд можно будет наблюдать упомянутые сбои/сбои.
Был бы рад, если бы здесь кто-то может дать совет.

Подробнее здесь: https://stackoverflow.com/questions/787 ... -debugging
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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