小编epo*_*ine的帖子

Eclipse中的Android NDK调试 - 如何阻止仅在步进本机代码时发生的segfaults/SIGILL

我已经在Eclipse中为使用Android NDK(在Windows XP上,使用Cygwin)的本机代码设置调试到我可以在Java和本机代码中设置断点的阶段,调试器将正确地破坏它们.我的问题是,当单步执行本机代码时,我会经常得到分段错误/ SIGILL,而不是在继续通过断点时发生的.

  • 我的应用程序是可调试的,如AndroidManifest.xml中所定义
  • 我更改了(NDK)/build/core/build-binary.mk以防止它在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 - 令人惊讶地没有我预期的线程问题)上尝试了这一点,结果相似(尽管如果我没记错的话,故障发生在不同的地方)代码中的点数).

有没有人对我可以尝试的可能的修复/步骤有任何了解,和/或能够成功单步执行本机代码而没有任何问题?

非常感谢


编辑:这从未真正解决,但对于任何想要查看NDK调试指南的人,您可以在此处找到它.

编辑2:一旦NDK的新版本出现,我得到了这个问题的答案,这个问题现在可能是多余的.我的导游可能仍然有效,但我还没有使用NDK一段时间,所以我不能保证它的持续正确性.我已经接受了我的答案,因为这三个人基本上都说了同样的话,那是第一个提交的答案.

eclipse debugging android android-ndk

43
推荐指数
1
解决办法
4790
查看次数

尝试使用gdata API将视频上传到YouTube时找不到类错误

我目前正在编写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)

android gdata-api youtube-api

6
推荐指数
1
解决办法
2250
查看次数

在Java/Eclipse中,为什么在我的代码中设置断点会改变该语句的效果?

我正在Eclipse中编写一个Android应用程序,并使用一个在屏幕上显示一些文本TextView.不同的线程有时会更改此视图的文本,使用以下代码:

runOnUiThread(new Runnable() {

    @Override
    public void run() {
        view.setText(newLyric);
    }
});
Run Code Online (Sandbox Code Playgroud)

我想调试该setText行以检查是否正在传入正确的字符串(对于某些文本,它不是自动换行以适应屏幕,而对于其他文本它是,但这是一个不同的问题).当我在该行上放置断点时,文本始终是自动换行的.当我禁用/删除断点时,通常不会被包装的文本(它是确定性的)不是自动换行的.

这对我来说没什么意义.我已经看到了这个问题,我理解这背后的原因,但我不明白为什么会出现这个问题.任何人都可以对此有所了解吗?我正在测试设备,如果这有任何区别.


编辑:事实证明这是一个竞争条件,现在我只需要弄清楚如何解决它...显然我只能选择一个'正确'的答案,但谢谢你们所有人的有用评论:)

java eclipse android breakpoints

4
推荐指数
1
解决办法
402
查看次数