问题描述
我正在尝试调试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