LLDB用于Mediaplayer调试

问题描述

我正在尝试调试MediaPlayer类使用的本机库:

import androidx.appcompat.app.AppCompatActivity;
import android.media.MediaPlayer;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MediaPlayer mp = MediaPlayer.create(this,R.raw.lencia);
        mp.start();
   }
}

调试类型为(双Java +本机)。但是当我将断点放在

MediaPlayer.java,位于:

  private void startImpl() {
        baseStart();
        stayAwake(true);
        _start();
    }

什么都没发生。您能告诉我如何开始调试内置的c ++库吗?

解决方法

lldb对Java或其调试信息一无所知,因此它无法从Java源文件中的源位置转换为代码中该方法的实现。您可以使用lldb调试应用程序的本机端,但不能调试Java端。您必须弄清楚C端需要从哪里中断并从那里开始,您不能从Java开始并进入C。

,

Android Studio确实支持同时调试本机代码和Java代码。在另一篇文章中对此进行了回答:

Debug native code in Android Studio

指向该“双重”调试的Android Studio页面的链接为: https://developer.android.com/studio/debug