当我得到这样的东西
ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(18677): at com.companyname.a.a.a(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
我如何知道问题所在并调试此问题?我只获得了ProGuard的映射输出,并且不知道行号.谢谢.
我正在制作一个新的Android项目,包括标准'app'模块,以及一个库项目(让我们称之为'custom_lib').在app的build.gradle文件,我的链接模块这样:
dependencies {
compile project(':custom_lib')
}
Run Code Online (Sandbox Code Playgroud)
当我触发构建过程(Menu Build> Make Project)时,我在Gradle控制台中获得以下输出
Executing tasks: [clean, :app:compileDebugSources, :custom_lib:compileDebugSources]
Configuration on demand is an incubating feature.
:app:clean
:custom_lib:clean
:app:preBuild
:app:preDebugBuild
:app:checkDebugManifest
:app:preReleaseBuild
:custom_lib:compileLint
:custom_lib:copyReleaseLint UP-TO-DATE
:custom_lib:mergeReleaseProguardFiles UP-TO-DATE
:custom_lib:preBuild
:custom_lib:preReleaseBuild
:custom_lib:checkReleaseManifest
:custom_lib:prepareReleaseDependencies
:custom_lib:compileReleaseAidl
:custom_lib:compileReleaseRenderscript
:custom_lib:generateReleaseBuildConfig
:custom_lib:generateReleaseAssets UP-TO-DATE
:custom_lib:mergeReleaseAssets
:custom_lib:generateReleaseResValues UP-TO-DATE
:custom_lib:generateReleaseResources
:custom_lib:packageReleaseResources
:custom_lib:processReleaseManifest
:custom_lib:processReleaseResources
:custom_lib:generateReleaseSources
:custom_lib:compileReleaseJava
:custom_lib:processReleaseJavaRes UP-TO-DATE
:custom_lib:packageReleaseJar
:custom_lib:compileReleaseNdk
:custom_lib:packageReleaseJniLibs UP-TO-DATE
:custom_lib:packageReleaseLocalJar UP-TO-DATE
:custom_lib:packageReleaseRenderscript UP-TO-DATE
:custom_lib:bundleRelease
:app:prepareComAndroidSupportAppcompatV72102Library
:app:prepareComAndroidSupportSupportV42102Library
:app:prepareTestDoubleBuildCustom_libUnspecifiedLibrary
:app:prepareDebugDependencies
:app:compileDebugAidl
:app:compileDebugRenderscript
:app:generateDebugBuildConfig
:app:generateDebugAssets …Run Code Online (Sandbox Code Playgroud) 我在控制台中看到调试语句,但调试器不会在任何断点上停止.我尝试清除所有断点并重新添加它们.不确定这是怎么发生的但是确实如此.
我正在使用Windows 7,最近从Eclipse切换到Android Studio.我现在无法调试.
运行Android Studio 0.8.6,我设置了一个完全默认的安装,我使用新项目向导创建了一个默认的空项目,目标是ICS SDK.然后我在onCreate中放置一个断点,单击调试按钮并运行.
附加调试器,因为我可以在调试器窗口中看到消息"连接到目标VM".
我知道代码正在执行,因为我正在更新UI中的一些文本来显示这一点.
我曾尝试在许多地方设置断点,但没有一个被击中.
我把头发拉到这里,因为我看不出我做错了什么.我是新手,因此我认为gradle中可能存在一些我应该更改的设置,但是使用向导构建的绝对标准项目肯定会让我遇到断点?
我注意到的一件事是在我的build.gradle文件中没有提到调试版本,只提供了一个版本.我想知道这可能是问题吗?
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)
注意.我在我自己的设备和模拟器上都尝试过这个
更新:
我更改了View Breakpoints选项中的设置以打开"Java Exception Breakpoints",但仅限于未捕获的异常.然后,在onCreate结束时,我故意造成NullPointerException.当我现在在调试中运行时,我仍然没有点击我的实际代码并且没有在源代码上看到代码中断,但程序确实暂停.我知道这是我的NullPointerException导致这种情况,因为当我删除它时,我可以看到代码继续并且不会中断.
在我的代码中断调试窗口时,我在"主"线程中,在一个名为"performLaunchActivity"的函数中.我看不到比这更多的信息了.因此,我可能正在通过调用performLaunchActivity的任何级别的代码进行调试,但我的源代码被视为无法单步执行它?
android intellij-idea gradle android-studio android-gradle-plugin
我正在使用android studio 1.5.1并尝试在模拟器上调试非常简单的应用程序。我已经尝试了18-23版的模拟器,并且都做了相同的事情。基本上,它将在方法级别的断点处暂停线程,但不会在任何行断点处暂停线程。
在注意到一些断点没有被命中后,我发现这篇文章回答了为什么:
我不记得在 Android Studio 3.3 之前发生过这种情况。有什么方法可以阻止这种行为,以便在条件语句上命中断点?
在 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'
Run Code Online (Sandbox Code Playgroud)
debug {
debuggable true
jniDebuggable true
minifyEnabled false
shrinkResources false
//ndk.debugSymbolLevel = 'FULL'
}
Run Code Online (Sandbox Code Playgroud)
4)项目结构如图所示。
能够运行项目并生成共享库以及其他预构建的 .SO 和 apk 作品,还创建了 CPP 文件夹并能够查看我的项目的 C 代码文件。
调试问题:
LLDB 服务器启动并且调试器附加到进程,但是调试任何 C 文件都失败并出现以下错误。
当前不会命中断点。没有可执行代码与该行关联
谢谢
android android-ndk android-studio ndk-build android-native-library