草庐IT

android - 更新到 Marshmallow 后,应用程序在所有 arm64 设备上启动时崩溃。如何仅使用 pc 偏移量进行调试?

coder 2023-12-16 原文

我的应用在启动时在所有 Android Marshmallow arm64 设备上崩溃。用户之前在同一台设备上使用 Lollipop 上的应用程序,但在他们的设备更新到 Marshmallow 后开始报告这些崩溃。 32 位设备不受影响。崩溃报告都是这样的:

ABI: 'arm64'
pid: 3531, tid: 3531, name: ompany.myapp  >>> com.mycompany.myapp <<<
signal 4 (SIGILL), code 1 (ILL_ILLOPC), fault addr 0x7f796d9370
    x0   0000000013087000  x1   0000007f8815da00  x2   0000000000000002  x3   0000000000000004
    x4   b42e90dfe44ab496  x5   b42e90dfe44ab496  x6   0000000000000000  x7   00000000019b7af0
    x8   0000000013087000  x9   0000007f87713000  x10  0000000000000601  x11  000000001308700c
    x12  0000000000002000  x13  0000000000002000  x14  000000006fb18428  x15  00000000013cd010
    x16  0000000000000000  x17  0000000000002000  x18  0000005594f27e90  x19  0000000000000003
    x20  0000000013087000  x21  0000007f75e00098  x22  00000000130d6e20  x23  0000000000000601
    x24  0000000000000000  x25  0000000000000001  x26  0000000000000000  x27  0000000000000000
    x28  0000000000000000  x29  00000000130d6e20  x30  0000007f796d9350
    sp   0000007ff8a7bc60  pc   0000007f796d9370  pstate 0000000080000000

backtrace:
    #00 pc 0000000000929370  /data/app/com.mycompany.myapp-1/oat/arm64/base.odex (offset 0x486000)
    #01 pc 000000000092934c  /data/app/com.mycompany.myapp-1/oat/arm64/base.odex (offset 0x486000)

偏移量 0x486000 在所有报告中都是一致的。

我可以使用这个偏移量来调试崩溃吗?有关应用程序的更多信息:

  • 没有本地代码(全是 Java)
  • 如果我解压apk,目录如下(没有lib目录)

    [res], [assets], [META-INF], classes.dex, resources.arsc, AndroidManifest.xml

  • 我读过一些人使用的 abi 过滤技巧,从他们的构建中排除 arm64 库,强制系统加载 32 位库,但我没有 native 代码,也没有 libs 目录。

我的猜测是我可以使用该偏移量做一些事情,但我不确定从哪里开始。

最佳答案

我的应用程序在 arm64 设备 (Nexus 9) 中崩溃。我试过 this answer它帮助了我。现在它可以在我迄今为止测试过的所有设备上运行。

关于android - 更新到 Marshmallow 后,应用程序在所有 arm64 设备上启动时崩溃。如何仅使用 pc 偏移量进行调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36996268/

有关android - 更新到 Marshmallow 后,应用程序在所有 arm64 设备上启动时崩溃。如何仅使用 pc 偏移量进行调试?的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  3. ruby-on-rails - 按天对 Mongoid 对象进行分组 - 2

    在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev

  4. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  5. ruby - 如何进行排列以有效地定制输出 - 2

    这是一道面试题,我没有答对,但还是很好奇怎么解。你有N个人的大家庭,分别是1,2,3,...,N岁。你想给你的大家庭拍张照片。所有的家庭成员都排成一排。“我是家里的friend,建议家庭成员安排如下:”1岁的家庭成员坐在这一排的最左边。每两个坐在一起的家庭成员的年龄相差不得超过2岁。输入:整数N,1≤N≤55。输出:摄影师可以拍摄的照片数量。示例->输入:4,输出:4符合条件的数组:[1,2,3,4][1,2,4,3][1,3,2,4][1,3,4,2]另一个例子:输入:5输出:6符合条件的数组:[1,2,3,4,5][1,2,3,5,4][1,2,4,3,5][1,2,4,5,3][

  6. ruby - 即使失败也继续进行多主机测试 - 2

    我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r

  7. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  8. ruby-on-rails - 无法让 rspec、spork 和调试器正常运行 - 2

    GivenIamadumbprogrammerandIamusingrspecandIamusingsporkandIwanttodebug...mmm...let'ssaaay,aspecforPhone.那么,我应该把“require'ruby-debug'”行放在哪里,以便在phone_spec.rb的特定点停止处理?(我所要求的只是一个大而粗的箭头,即使是一个有挑战性的程序员也能看到:-3)我已经尝试了很多位置,除非我没有正确测试它们,否则会发生一些奇怪的事情:在spec_helper.rb中的以下位置:require'rubygems'require'spork'

  9. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  10. ruby - JetBrains RubyMine 3.2.4 调试器不工作 - 2

    使用Ruby1.9.2运行IDE提示说需要gemruby​​-debug-base19x并提供安装它。但是,在尝试安装它时会显示消息Failedtoinstallgems.Followinggemswerenotinstalled:C:/ProgramFiles(x86)/JetBrains/RubyMine3.2.4/rb/gems/ruby-debug-base19x-0.11.30.pre2.gem:Errorinstallingruby-debug-base19x-0.11.30.pre2.gem:The'linecache19'nativegemrequiresinstall

随机推荐