【发布时间】:2023-03-08 06:44:01
【问题描述】:
在Android studio(v4.1.2)中尝试ndk-build C代码调试。下面是build.gradle设置。
-
jni , C/C++ 源文件 Dirs.实际的 C 文件不在 jni 文件夹下,而是在它之外,而是在 android.mk 文件中引用。
sourceSets.main.jniLibs.srcDirs = ['D:/ccodefolder/jni/']
2)Android.mk 从 C、c++ 代码构建共享库,并链接内置共享库和静态库。
externalNativeBuild {
ndkBuild {
path file('D:/ccodefolder/jni/Android.mk')
}
}
ndkVersion '21.1.6352462'
debug {
debuggable true
jniDebuggable true
minifyEnabled false
shrinkResources false
//ndk.debugSymbolLevel = 'FULL'
}
4)项目结构如图所示。
能够运行项目并生成共享库以及其他预构建的 .SO 和 apk 作品,还创建了 CPP 文件夹并能够查看我的项目的 C 代码文件。
调试问题:
LLDB 服务器启动,调试器附加到进程,但调试任何 C 文件失败并出现以下错误。
目前不会命中断点。没有可执行代码与此行关联
谢谢
【问题讨论】:
-
你能告诉我们你在哪一行设置断点吗?
-
有真正的代码被执行。添加了一个示例。
-
这确实是一个奇怪的问题。我唯一能想到的是编译器可能正在优化代码并摆脱那条线。那或调试符号不存在,因此调试器无法跟踪它当前正在执行的行。
-
感谢您的建议。我检查了许多文件,没有一个是可调试的。在 jni 文件夹之外放置 C 文件重要吗?尝试更新 gradle 并生成完整的调试符号。
标签: android android-studio android-ndk ndk-build android-native-library