【问题标题】:How to debug a SIGSEGV on a Mac?如何在 Mac 上调试 SIGSEGV?
【发布时间】:2011-02-18 20:39:34
【问题描述】:

我刚开始作为一名 Android 应用程序开发人员,我的第一个应用程序已经出现问题:(

这是一个使用 jQTouch 创建并使用 PhoneGap 打包的 web 应用程序,已上市数周。一位客户正在使用 Android 2.1 在摩托罗拉 Milestone(相当于加拿大的 Droid)上运行它,她说它崩溃了。

我尝试使用我从以下网站定义的 AVD 重现它,但确实得到了 SIGSEGV 异常。 http://mobile.tutsplus.com/tutorials/android/common-android-virtual-device-configurations/

我环顾四周,发现我必须在工具中运行日志跟踪才能查看崩溃背后的原因。我找到了两个工具,stack.py 和 parse_stack.py,但是它们需要安装一个命令:arm-eabi-addr2line,而我没有。 再次搜索,在GitHub上找到了:https://github.com/jsnyder/arm-eabi-toolchain/

现在,尝试安装此命令,它说我没有足够新的 GCC 版本。我安装了最新的 XCode,我认为它带有 GCC。否则它只会说没有找到 GCC。

问题

  1. 如何在我的 Mac 上安装这个命令 arm-eabi-addr2line?
  2. 我这样做是不是一无是处?如果 stack.py 告诉我 Android SDK 有问题,我该如何修复我的应用?
  3. 非常感谢!

【问题讨论】:

    标签: android android-emulator cordova segmentation-fault


    【解决方案1】:

    除非您正在编写自己的固件,否则您不会调试 SIGSEGV 崩溃。这些代表 Android 中非常低级的崩溃。

    打包一个演示崩溃的示例项目并将其上传到http://b.android.com,以及如何重现崩溃的步骤列表。还包括您在 LogCat 中看到的 SIGSEGV 故障转储。

    【讨论】:

    • 谢谢!最后我发现Android 2.1 不喜欢Phonegap 打包的Web 应用程序,它在一行上缩小了CSS。虽然缩小了许多行:S
    • @Alexandr3:同样,如果您有一个可以重现错误的示例,请将其发布到b.android.com——这是修复这些问题的最佳方法。像这样的核心转储似乎比其他类型的错误更受关注。
    【解决方案2】:

    MacPorts 是一个很好的工具,可以安装任何你可能需要调试的东西,因为它可以为你安装 python 和更新版本的 gcc http://www.macports.org/

    【讨论】:

    • 谢谢,但看来我找到了这个 SIGSEGV 异常背后的原因(请参阅我对上面答案的评论)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2010-12-14
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    相关资源
    最近更新 更多