我正在使用 AndEngine 和 PhysicsBox2DExtension 制作游戏。我的游戏不断崩溃,我在未过滤的 LogCat 中得到了这个:
07-06 13:25:27.266: I/DEBUG(19582): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
07-06 13:25:27.266: I/DEBUG(19582): Build fingerprint: 'TMOUS/SGH-T959V/SGH-T959V/SGH-T959V:2.2.1/FROYO/VUVKD1:user/release-keys'
07-06 13:25:27.274: I/DEBUG(19582): pid: 22238, tid: 22263 >>> com.prattia.webs.testgfx5 <<<
07-06 13:25:27.274: I/DEBUG(19582): signal 11 (SIGSEGV), fault addr deadbaad
07-06 13:25:27.286: I/DEBUG(19582): r0 00000000 r1 afd14921 r2 00000027 r3 00000070
07-06 13:25:27.286: I/DEBUG(19582): r4 afd42328 r5 00000000 r6 00000000 r7 43095ba0
07-06 13:25:27.297: I/DEBUG(19582): r8 447d75ac r9 43095b5c 10 80aa23f4 fp 43095b58
07-06 13:25:27.297: I/DEBUG(19582): ip 00001730 sp 447d74c8 lr deadbaad pc afd11f74 cpsr 60000030
07-06 13:25:27.301: I/DEBUG(19582): d0 6472656767756265 d1 646f426574616572
07-06 13:25:27.301: I/DEBUG(19582): d2 2074736e6f632879 d3 654479646f423262
07-06 13:25:27.305: I/DEBUG(19582): d4 73656e69676e655f d5 69676e45646e412f
07-06 13:25:27.309: I/DEBUG(19582): d6 6e45646e412f656e d7 73796850656e6967
07-06 13:25:27.309: I/DEBUG(19582): d8 40c9de1ed6a7d420 d9 43e0000000000000
07-06 13:25:27.313: I/DEBUG(19582): d10 41dfffffffc00000 d11 c3e0000000000000
07-06 13:25:27.313: I/DEBUG(19582): d12 0000000000000000 d13 0000000000000000
07-06 13:25:27.313: I/DEBUG(19582): d14 0000000000000000 d15 0000000000000000
07-06 13:25:27.317: I/DEBUG(19582): d16 000000c247d403f0 d17 400921fb54442d18
07-06 13:25:27.317: I/DEBUG(19582): d18 3f810f1cab7c1816 d19 3f651bd7d319330c
07-06 13:25:27.317: I/DEBUG(19582): d20 bfc55034095fd11a d21 be5ae514498b308e
07-06 13:25:27.321: I/DEBUG(19582): d22 0000000000000000 d23 3de5d93a5acfd57c
07-06 13:25:27.325: I/DEBUG(19582): d24 bfb3b25552016f7e d25 3fb10e9526779bed
07-06 13:25:27.325: I/DEBUG(19582): d26 bfaddfe9639fbb1a d27 3fa97c111b7b144e
07-06 13:25:27.325: I/DEBUG(19582): d28 bfa2b4442c6a6c2f d29 0000000000000000
07-06 13:25:27.325: I/DEBUG(19582): d30 0000000000000000 d31 0000000000000000
07-06 13:25:27.325: I/DEBUG(19582): scr 60000012
07-06 13:25:27.469: I/DEBUG(19582): #00 pc 00011f74 /system/lib/libc.so
07-06 13:25:27.473: I/DEBUG(19582): #01 pc 0001921e /system/lib/libc.so
07-06 13:25:27.473: I/DEBUG(19582): #02 pc 00026558 /data/data/com.prattia.webs.testgfx5/lib/libandenginephysicsbox2dextension.so
07-06 13:25:27.473: I/DEBUG(19582): #03 pc 00013e7c /data/data/com.prattia.webs.testgfx5/lib/libandenginephysicsbox2dextension.so
07-06 13:25:27.473: I/DEBUG(19582): #04 pc 00016e34 /system/lib/libdvm.so
07-06 13:25:27.473: I/DEBUG(19582): code around pc:
07-06 13:25:27.473: I/DEBUG(19582): afd11f54 2d00682d e029d1fb b12b68db c05cf8df
07-06 13:25:27.473: I/DEBUG(19582): afd11f64 f8442001 4798000c e054f8df 26002227
07-06 13:25:27.473: I/DEBUG(19582): afd11f74 2000f88e eec2f7fb f7fc2106 f04feff8
07-06 13:25:27.473: I/DEBUG(19582): afd11f84 91035180 460aa901 96012006 f7fc9602
07-06 13:25:27.473: I/DEBUG(19582): afd11f94 a905eb7e 20024632 eb88f7fc eeaef7fb
07-06 13:25:27.473: I/DEBUG(19582): code around lr:
07-06 13:25:27.477: I/DEBUG(19582): deadba8c ffffffff ffffffff ffffffff ffffffff
07-06 13:25:27.477: I/DEBUG(19582): deadba9c ffffffff ffffffff ffffffff ffffffff
07-06 13:25:27.477: I/DEBUG(19582): deadbaac ffffffff ffffffff ffffffff ffffffff
07-06 13:25:27.477: I/DEBUG(19582): deadbabc ffffffff ffffffff ffffffff ffffffff
07-06 13:25:27.477: I/DEBUG(19582): deadbacc ffffffff ffffffff ffffffff ffffffff
07-06 13:25:27.477: I/DEBUG(19582): stack:
07-06 13:25:27.477: I/DEBUG(19582): 447d7488 00000000
07-06 13:25:27.477: I/DEBUG(19582): 447d748c 00000000
07-06 13:25:27.477: I/DEBUG(19582): 447d7490 afd425a0 /system/lib/libc.so
07-06 13:25:27.477: I/DEBUG(19582): 447d7494 afd4254c /system/lib/libc.so
07-06 13:25:27.477: I/DEBUG(19582): 447d7498 00000000
07-06 13:25:27.477: I/DEBUG(19582): 447d749c afd1596b /system/lib/libc.so
07-06 13:25:27.481: I/DEBUG(19582): 447d74a0 afd14921 /system/lib/libc.so
07-06 13:25:27.481: I/DEBUG(19582): 447d74a4 afd14921 /system/lib/libc.so
07-06 13:25:27.481: I/DEBUG(19582): 447d74a8 00000070
07-06 13:25:27.481: I/DEBUG(19582): 447d74ac afd42328 /system/lib/libc.so
07-06 13:25:27.481: I/DEBUG(19582): 447d74b0 00000000
07-06 13:25:27.481: I/DEBUG(19582): 447d74b4 447d74dc
07-06 13:25:27.481: I/DEBUG(19582): 447d74b8 43095ba0
07-06 13:25:27.481: I/DEBUG(19582): 447d74bc afd14bc3 /system/lib/libc.so
07-06 13:25:27.481: I/DEBUG(19582): 447d74c0 df002777
07-06 13:25:27.481: I/DEBUG(19582): 447d74c4 e3a070ad
07-06 13:25:27.481: I/DEBUG(19582): #00 447d74c8 00000003
07-06 13:25:27.481: I/DEBUG(19582): 447d74cc 43095b58
07-06 13:25:27.481: I/DEBUG(19582): 447d74d0 43095ba0
07-06 13:25:27.485: I/DEBUG(19582): 447d74d4 afd14f29 /system/lib/libc.so
07-06 13:25:27.485: I/DEBUG(19582): 447d74d8 afd4254c /system/lib/libc.so
07-06 13:25:27.485: I/DEBUG(19582): 447d74dc fffffbdf
07-06 13:25:27.485: I/DEBUG(19582): 447d74e0 00000054
07-06 13:25:27.485: I/DEBUG(19582): 447d74e4 00000003
07-06 13:25:27.485: I/DEBUG(19582): 447d74e8 43095b58
07-06 13:25:27.489: I/DEBUG(19582): 447d74ec afd19223 /system/lib/libc.so
07-06 13:25:27.489: I/DEBUG(19582): #01 447d74f0 00000054
07-06 13:25:27.489: I/DEBUG(19582): 447d74f4 821412bc /data/data/com.prattia.webs.testgfx5/lib/libandenginephysicsbox2dextension.so
07-06 13:25:27.489: I/DEBUG(19582): 447d74f8 447d75d0
07-06 13:25:27.489: I/DEBUG(19582): 447d74fc 8212655c /data/data/com.prattia.webs.testgfx5/lib/libandenginephysicsbox2dextension.so
07-06 13:25:28.040: I/DEBUG(19582): dumpstate /data/log/dumpstate_app_native.txt
07-06 13:25:28.114: I/dumpstate(22478): begin
07-06 13:25:28.122: I/dalvikvm(2480): threadid=3: reacting to signal 3
07-06 13:25:28.157: I/dalvikvm(2480): Wrote stack traces to '/data/anr/traces.txt'
07-06 13:25:28.192: I/BootReceiver(2480): Copying /data/tombstones/tombstone_09 to DropBox (SYSTEM_TOMBSTONE)
07-06 13:25:28.239: I/dalvikvm(2604): threadid=3: reacting to signal 3
07-06 13:25:28.239: I/dalvikvm(2604): Wrote stack traces to '/data/anr/traces.txt'
任何人都可以向我解释发生了什么以及我如何找到导致崩溃的确切原因吗?
我的代码中有两个地方崩溃了,但崩溃的时候相当随机。执行此方法后:
private void destroyFiller(){ //Deletes filler
if(filler[fillerNum].active){
Log.e("destroyFiller","Destroying filler");
filler[fillerNum].active=false;
filler[fillerNum].body.setActive(false);
scene.detachChild(filler[fillerNum].sprite);
fillerCount--;
fillersLeftText.setText("Balls left: "+Integer.toString(fillerCount));
if(fillerCount==0)
gameOver();
Log.e("destroyFiller","Destroyed");
}
}
在执行此方法中指示的行之后:
private void levelComplete(){
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(TestGFX5Activity.this, "Level Complete", Toast.LENGTH_SHORT).show();
}
});
Log.e("Level Complete","Going to reset values");
//Reset values
level++;
destroyerNum++;
fillerCount = (originalNumberOfFillers + level - 1);
areaFilled=0;
fillAreaPercent = 0;
//Rid scene of sprites
for(int x=0;x<=fillerNum;x++){
filler[x].body.setActive(false);
scene.detachChild(filler[x].sprite);
filler[x].active=false;
filler[x].scale=originalSpriteScale;
filler[x].body.setUserData("inactive");
}
levelText.setText("Level: "+Integer.toString(level));
fillersLeftText.setText("Balls left: "+Integer.toString(fillerCount));
percentFilledText.setText("0%");
fillerNum = -1;
Log.e("Level Complete","values reset");
randx = random.nextInt(650) + 25;
randy = random.nextInt(400) + 25;
randix = random.nextInt(10);
randiy = random.nextInt(10);
if(randix%2==0)
ix = 5;
else
ix = -5;
if(randiy%2==0)
iy = 5;
else
iy = -5;
Log.e("Level Complete","Creating destroyer");
destroyer[destroyerNum] = new Ball(randx, randy, destroyerTR, getVertexBufferObjectManager(), ix, iy); //crashes here
Log.e("Level Complete","complete"); //This line never reached.
}
最佳答案
您应该按照描述使用addr2line 工具here并在您的库中查找这两个地址以找出导致崩溃的原因:
#02 pc 00026558 /data/data/com.prattia.webs.testgfx5/lib/libandenginephysicsbox2dextension.so
#03 pc 00013e7c /data/data/com.prattia.webs.testgfx5/lib/libandenginephysicsbox2dextension.so
所以在 Windows 下你应该:
从设备复制库:
adb pull /data/data/com.prattia.webs.testgfx5/lib/libandenginephysicsbox2dextension.so C:\
使用命令行为其运行addr2line工具:
cd %PATH_TO_YOUR_NDK%\toolchains\arm-linux-androideabi-4.4.3\prebuilt\linux-x86\bin
arm-linux-androideabi-addr2line -C -f -e C:\libandenginephysicsbox2dextension.so
按地址输入地址:
00026558 [ENTER]
> here will be function name and line
00013e7c [ENTER]
> and again
注意:在 Windows 下运行此工具可能会比在 Linux 下提供更少的信息,因此您可以选择将发行版安装为虚拟机并按照上面原始答案链接中的说明进行操作。
另一种(更简单?)方法是使用 ndk-stack:
运行ndk-stack:
cd %PATH_TO_YOUR_NDK%
ndk-stack -sym C:\libandenginephysicsbox2dextension.so -dump C:\dump.txt
关于Android libc.so 崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369301/
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
代码:threads=[]Thread.abort_on_exception=truebegin#throwexceptionsinthreadssowecanseethemthreadseputs"EXCEPTION:#{e.inspect}"puts"MESSAGE:#{e.message}"end崩溃:.rvm/gems/ruby-2.1.3@req/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:478:inload_missing_constant':自动加载常量MyClass时检测到循环依赖稍加研究后,
任何人都可以解释为什么当对方法的调用看起来像这样时我可能会看到这个堆栈(由HTTParty::post请求引起):beginresponse=HTTParty::post(url,options)rescuelogger.warn("Couldnotpostto#{url}")rescueTimeout::Errorlogger.warn("Couldnotpostto#{url}:timeout")end堆栈:/usr/local/lib/ruby/1.8/timeout.rb:64:in`timeout'/usr/local/lib/ruby/1.8/net/protocol.rb
我使用vim编辑ruby文件,但是当我输入“.”时它崩溃了。我发现它是由AutoComplPop插件引起的。我该怎么办? 最佳答案 我找到了一种使用autocomplpop和filetype=ruby来防止vim崩溃的方法。将以下行放入您的.vimrcletg:acp_behaviorRubyOmniMethodLength=-1这将防止在您键入“.”时触发autocomplpop。(期间)这不是解决办法。(我不是vim插件程序员)祝你好运! 关于ruby-vim使用AutoComp
我正在尝试编写一个Ruby扩展,而且我一整天都在成功编译我的nmatrix.so共享对象文件。但是,突然之间,它开始生成nmatrix.bundle,而根本没有任何.so文件。它没有给我任何链接器错误,所以我无法想象为什么会这样。我也没有更改myMakefileorextconf.rb中的任何内容.我一直通过rvm使用Ruby1.9.3p0。我已经尝试对当天的工作执行gitstashsave并编译一些我知道应该没有链接器错误的东西(产生.so的东西)更早。不幸的是,这也会生成一个.bundle文件。很明显,我做了一些事情——可能是无意中安装了一些东西——这改变了一些关键的GCC设置。这
我在Rails5项目的app/services文件夹下有多个加载/需要类的问题,我开始放弃这个问题。首先要明确的是,services/是我在整个项目中使用的简单PORO类,用于从Controller、模型等中抽象出大部分业务逻辑。树看起来像这样app/services/my_service/base.rbfunny_name.rbmy_service.rbmodels/funny_name.rb失败#1首先,当我尝试使用MyService.const_get('FunnyName')时,它从我的模型目录中获取了FunnyName。当我直接执行MyService::FunnyName时,
我正在尝试按短语区分两个字符串,类似于StackOverflow在版本编辑页面上区分两个字符串的方式。执行此操作的算法是什么?是否有gems或其他标准库可以实现此目的?编辑:我见过其他差异算法(Differ与Ruby),它们似乎导致以下结果:>>o='nowisthetimewhenallgoodmen.'>>p='nowsometimethementimewhenallgoodmen.'>>Differ.diff_by_word(o,p).format_as(:html)=>"nowsomeistimethementimewhenallgoodmen."请注意每个单词的单词是如何区分
我正在从Ruby2.3.1升级到Ruby2.4.1,这样做之后,Unicorn似乎与新版本不兼容。我收到以下错误。我正在使用Unicorn5.1.0并尝试过Unicorn5.3.1无济于事。我是否需要使用不同的库而不是XCode工具进行编译?我在使用foremanstart和Procfile启动服务器后立即收到错误:webpack:bin/webpack-dev-servergulp:gulpredis:./scripts/start_redis_server.shsidekiq:bundleexecsidekiq-Cconfig/sidekiq.ymlannotations_serv
我不确定这是否是Rails特有的问题,因此我也将其标记为ruby。我正在通过部分呈现一组event记录。但是,我发现以不同方式渲染部分会导致性能差异显着。两个版本使用完全相同的数据,唯一不同的是用于渲染局部的代码。为什么一个版本总是比另一个版本快4倍?让我想知道我正在接受哪些其他性能影响......慢速版本(总请求时间950毫秒):#LogoutputRenderedevents/_event.html.erb(1.1ms)Renderedevents/_event.html.erb(1.1ms)...更快的版本(总请求时间为250毫秒):#LogoutputRenderedevent