我已经在Eclipse中为使用Android NDK(在Windows XP上,使用Cygwin)的本机代码设置调试到我可以在Java和本机代码中设置断点的阶段,调试器将正确地破坏它们.我的问题是,当单步执行本机代码时,我会经常得到分段错误/ SIGILL,而不是在继续通过断点时发生的.
APP_OPTIM定义为debug 时剥离调试符号,它位于我的jni目录中的Application.mk文件中LOCAL_CFLAGS := -g -O0在Android.mk文件中定义了,我也分别试过了这些标志我已经读过这个问题与生成的优化代码有关,但关闭优化-O0对我的问题没有影响.我NDK_BUILD=1在构建时也遇到了使用标志,但debuggable=true在AndroidManifest.xml中定义显然具有相同的效果.
我在仿真器(运行2.3.3)和设备(运行2.2 - 令人惊讶地没有我预期的线程问题)上尝试了这一点,结果相似(尽管如果我没记错的话,故障发生在不同的地方)代码中的点数).
有没有人对我可以尝试的可能的修复/步骤有任何了解,和/或能够成功单步执行本机代码而没有任何问题?
非常感谢
编辑2:一旦NDK的新版本出现,我得到了这个问题的答案,这个问题现在可能是多余的.我的导游可能仍然有效,但我还没有使用NDK一段时间,所以我不能保证它的持续正确性.我已经接受了我的答案,因为这三个人基本上都说了同样的话,那是第一个提交的答案.
我目前正在编写Android应用程序的一部分,使用Google Data API将视频上传到YouTube.我有来自Google Code的API的最新版本,我基本上已经从他们的开发人员指南中复制了该示例.
一切都没有警告或错误编译,应用程序运行正常.但是当我调用service.insert(...)时,我得到以下堆栈跟踪:
ERROR/dalvikvm(19489): Could not find class 'com.google.gdata.data.media.MediaBodyPart$MediaSourceDataHandler', referenced from method com.google.gdata.data.media.MediaBodyPart.initMediaDataHandler
ERROR/dalvikvm(19489): Could not find class 'javax.activation.DataHandler', referenced from method com.google.gdata.data.media.MediaBodyPart.initMediaDataHandler
ERROR/dalvikvm(19489): Could not find class 'javax.mail.internet.MimeBodyPart$MimePartDataHandler', referenced from method javax.mail.internet.MimeBodyPart.writeTo
ERROR/dalvikvm(19489): Could not find class 'javax.activation.DataHandler', referenced from method javax.mail.internet.MimeBodyPart.attachFile
ERROR/dalvikvm(19489): Could not find class 'javax.mail.internet.MimeBodyPart$MimePartDataHandler', referenced from method javax.mail.internet.MimeBodyPart.getDataHandler
ERROR/dalvikvm(19489): Could not find class 'javax.activation.DataHandler', referenced from method javax.mail.internet.MimeBodyPart.setContent
ERROR/dalvikvm(19489): Could not find class 'javax.activation.DataHandler', referenced from method javax.mail.internet.MimeBodyPart.setContent
ERROR/dalvikvm(19489): Could not …Run Code Online (Sandbox Code Playgroud) 我正在Eclipse中编写一个Android应用程序,并使用一个在屏幕上显示一些文本TextView.不同的线程有时会更改此视图的文本,使用以下代码:
runOnUiThread(new Runnable() {
@Override
public void run() {
view.setText(newLyric);
}
});
Run Code Online (Sandbox Code Playgroud)
我想调试该setText行以检查是否正在传入正确的字符串(对于某些文本,它不是自动换行以适应屏幕,而对于其他文本它是,但这是一个不同的问题).当我在该行上放置断点时,文本始终是自动换行的.当我禁用/删除断点时,通常不会被包装的文本(它是确定性的)不是自动换行的.
这对我来说没什么意义.我已经看到了这个问题,我理解这背后的原因,但我不明白为什么会出现这个问题.任何人都可以对此有所了解吗?我正在测试设备,如果这有任何区别.
编辑:事实证明这是一个竞争条件,现在我只需要弄清楚如何解决它...显然我只能选择一个'正确'的答案,但谢谢你们所有人的有用评论:)
android ×3
eclipse ×2
android-ndk ×1
breakpoints ×1
debugging ×1
gdata-api ×1
java ×1
youtube-api ×1