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
Мобильная версия