0
0

More than 1 year has passed since last update.

android メモ

Last updated at Posted at 2021-12-13

Android メモ

よく忘れるコマンド

C:\Users\th-yano\AppData\Local\Android\Sdk\emulator\emulator -avd Pixel_5_API_30  -netdelay none -netspeed full -no-snapshot -show-kernel
adb exec-out screencap -p > display.png
ps -eo user,pid,ppid,cpu,pcpu,virt,rss,args --sort -pcpu | head -5
ps -aT `ps -ef |grep kot | awk '{print $2}'`
adb shell dumpsys window > window.txt

スタックトレース

gdbで見た場合
(gdb) thread apply all bt

Thread 19 (Thread 4398.4422):
#0  0xec9f1b99 in ?? ()
Backtrace stopped: Cannot access memory at address 0xc

Thread 18 (Thread 4398.4421):
#0  0xec9f1b99 in ?? ()

Thread 17 (Thread 4398.4419):
#0  0xec9f1b99 in ?? ()
#1  0xebd1a13c in ?? ()
#2  0xebd1a3db in ?? ()
#3  0xebd1af19 in ?? ()
#4  0xebd4766a in ?? ()
#5  0xeae59117 in ?? ()
#6  0xe8da4fef in ?? ()
#7  0xeae587da in ?? ()
#8  0xe7912975 in ?? ()
#9  0xe78a4568 in ?? ()
#10 0xe7886b87 in ?? ()
#11 0xe64dbd2b in ?? ()
#12 0xe64c652a in ?? ()
Backtrace stopped: Cannot access memory at address 0xf1774ac6

Thread 16 (Thread 4398.4418):
#0  0xec9f1b99 in ?? ()
#1  0xebd1a13c in ?? ()
#2  0xebd1a3db in ?? ()
#3  0xebd1af19 in ?? ()
#4  0xebd4766a in ?? ()
#5  0xeae59117 in ?? ()
#6  0xe8da4fef in ?? ()
#7  0xeae587da in ?? ()
#8  0xe7912975 in ?? ()
#9  0xe78a4568 in ?? ()
#10 0xe7886b87 in ?? ()
#11 0xe64dbd2b in ?? ()
#12 0xe64c652a in ?? ()
Backtrace stopped: Cannot access memory at address 0xf1774ac6

Thread 15 (Thread 4398.4417):
#0  0xec9f1b99 in ?? ()
#1  0xebd1a13c in ?? ()
#2  0xebd1a3db in ?? ()
#3  0xebd1af19 in ?? ()
#4  0xebd4766a in ?? ()
#5  0xeae59117 in ?? ()
#6  0xe8da4fef in ?? ()
#7  0xeae587da in ?? ()
#8  0xe7912975 in ?? ()
#9  0xe78a4568 in ?? ()
#10 0xe7886b87 in ?? ()
#11 0xe78a3e91 in ?? ()
#12 0xe7912854 in ?? ()
#13 0xe791bde0 in ?? ()
#14 0x00000000 in ?? ()

Thread 14 (Thread 4398.4416):
#0  0xec9f1b99 in ?? ()
#1  0xebd1a13c in ?? ()
#2  0xebd1a3db in ?? ()
#3  0xebd1af19 in ?? ()
#4  0xebd4766a in ?? ()
#5  0xeae59117 in ?? ()
#6  0xe8da4fef in ?? ()
#7  0xeae587da in ?? ()
#8  0xe7912975 in ?? ()
#9  0xe78a4568 in ?? ()
#10 0xe7886b87 in ?? ()
#11 0xe6499bf7 in ?? ()

Thread 13 (Thread 4398.4415):
#0  0xec9f1b99 in ?? ()

Thread 12 (Thread 4398.4414):
#0  0xec9f1b99 in ?? ()

Thread 11 (Thread 4398.4413):
#0  0xec9f1b99 in ?? ()

Thread 10 (Thread 4398.4412):
#0  0xec9f1b99 in ?? ()

Thread 9 (Thread 4398.4411):
#0  0xec9f1b99 in ?? ()

Thread 8 (Thread 4398.4410):
#0  0xec9f1b99 in ?? ()
#1  0xde0f5494 in ?? ()
#2  0xde0f36d3 in ?? ()
#3  0xe7912975 in ?? ()
#4  0xe78a4568 in ?? ()
#5  0xe7886b87 in ?? ()
#6  0xff991ad4 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

Thread 7 (Thread 4398.4409):
#0  0xec9f1b99 in ?? ()
#1  0xe7912975 in ?? ()
#2  0xe78a4568 in ?? ()
#3  0xe7886b87 in ?? ()
#4  0xff9918ac in ?? ()
#5  0x43e00000 in ?? ()

Thread 6 (Thread 4398.4408):
#0  0xec9f1b99 in ?? ()
#1  0xe674ad7e in ?? ()
#2  0xe6749760 in ?? ()
#3  0xe7912975 in ?? ()
#4  0xe78a4568 in ?? ()
#5  0xe7886b87 in ?? ()
#6  0xe6897881 in ?? ()
#7  0x00000002 in ?? ()

Thread 5 (Thread 4398.4407):
#0  0xec9f1b99 in ?? ()

Thread 4 (Thread 4398.4406):
#0  0xec9f1b99 in ?? ()

Thread 3 (Thread 4398.4405):
#0  0xec9f1b99 in ?? ()

Thread 2 (Thread 4398.4404):
#0  0xec9f1b99 in ?? ()

Thread 1 (Thread 4398.4398):
#0  0xec9f1b99 in ?? ()
#1  0xbccd71de in ?? ()
#2  0xe62252b3 in ?? ()
#3  0x00000000 in ?? ()
(gdb) c
Continuing.

C++から適当にコード書いて呼んでみた場合
2021-12-13 09:30:11.815 4398-4398/jp.co.try_hard.kotlinsample I/MainActivity:   # 0: 0xbccd68f7  _Z16captureBacktracePPvj
      # 1: 0xbccd7194  Java_jp_co_try_1hard_kotlinsample_MainActivity_stackTrace
      # 2: 0xe62252b3  
      # 3: 0xe621eaa3  
      # 4: 0xe62b3502  _ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc
      # 5: 0xe6469882  _ZN3art11interpreter34ArtInterpreterToCompiledCodeBridgeEPNS_6ThreadEPNS_9ArtMethodEPNS_11ShadowFrameEtPNS_6JValueE
      # 6: 0xe645dbbf  _ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE
      # 7: 0xe6886018  MterpInvokeVirtual
      # 8: 0xe6218922  
      # 9: 0xe688635f  MterpInvokeVirtual
      #10: 0xe6218922  
      #11: 0xe688635f  MterpInvokeVirtual
      #12: 0xe6218922  
      #13: 0xe688635f  MterpInvokeVirtual
      #14: 0xe6218922  
      #15: 0xe6452c83  
      #16: 0xe645cda0  _ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadERKNS_20CodeItemDataAccessorEPNS_11ShadowFrameEPNS_6JValueE
      #17: 0xe645e636  _ZN3art11interpreter6DoCallILb0ELb1EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE
      #18: 0xe626be92  _ZN3art11interpreter20ExecuteSwitchImplCppILb1ELb0EEEvPNS0_17SwitchImplContextE
      #19: 0xe6225f63  
      #20: 0xe6452c0f  
      #21: 0xe645cda0  _ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadERKNS_20CodeItemDataAccessorEPNS_11ShadowFrameEPNS_6JValueE
      #22: 0xe645e636  _ZN3art11interpreter6DoCallILb0ELb1EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE
      #23: 0xe6271794  _ZN3art11interpreter20ExecuteSwitchImplCppILb1ELb0EEEvPNS0_17SwitchImplContextE
      #24: 0xe6225f63  
      #25: 0xe6452c0f  
      #26: 0xe645cda0  _ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadERKNS_20CodeItemDataAccessorEPNS_11ShadowFrameEPNS_6JValueE
      #27: 0xe645dba1  _ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE
      #28: 0xe6886018  MterpInvokeVirtual
      #29: 0xe6218922  

debuggerdを利用
----- pid 4662 at 2021-12-13 00:52:35 -----
Cmd line: jp.co.try_hard.kotlinsample
ABI: 'x86'

"rd.kotlinsample" sysTid=4662
    #00 pc 00000b99  [vdso] (__kernel_vsyscall+9)
    #01 pc 000ce3d7  /apex/com.android.runtime/lib/bionic/libc.so (nanosleep+23) (BuildId: 6e3a0180fa6637b68c0d181c343e6806)
    #02 pc 00087070  /apex/com.android.runtime/lib/bionic/libc.so (sleep+64) (BuildId: 6e3a0180fa6637b68c0d181c343e6806)
    #03 pc 000311dd  /data/app/~~EJ2WGdPVV4r-QK68iTfKBg==/jp.co.try_hard.kotlinsample-X_ZOcH-ndQRtuVi02XsLxw==/base.apk!libkotlinsample.so (offset 0xfd000) (Java_jp_co_try_1hard_kotlinsample_MainActivity_stackTrace+205) (BuildId: af17a6c09f01b276e0b2db5c6112935c54cbf7af)
    #04 pc 001422b2  /apex/com.android.art/lib/libart.so (art_quick_generic_jni_trampoline+82) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #05 pc 0013baa2  /apex/com.android.art/lib/libart.so (art_quick_invoke_stub+338) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #06 pc 001d0501  /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+241) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #07 pc 00386881  /apex/com.android.art/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+385) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #08 pc 0037abbe  /apex/com.android.art/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1070) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #09 pc 007a3017  /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+967) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #10 pc 00135921  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #11 pc 0000048e  [anon:dalvik-classes3.dex extracted in memory from /data/app/~~EJ2WGdPVV4r-QK68iTfKBg==/jp.co.try_hard.kotlinsample-X_ZOcH-ndQRtuVi02XsLxw==/base.apk!classes3.dex] (jp.co.try_hard.kotlinsample.MainActivity.onCreate+10)
    #12 pc 007a335e  /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+1806) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #13 pc 00135921  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #14 pc 001a99a0  /system/framework/framework.jar (android.app.Activity.performCreate+88)
    #15 pc 007a335e  /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+1806) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #16 pc 00135921  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #17 pc 001a992e  /system/framework/framework.jar (android.app.Activity.performCreate+2)
    #18 pc 007a335e  /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+1806) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #19 pc 00135921  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #20 pc 0021200e  /system/framework/framework.jar (android.app.Instrumentation.callActivityOnCreate+6)
    #21 pc 0036fc82  /apex/com.android.art/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.10914192770458939989)+370) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #22 pc 00379d9f  /apex/com.android.art/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+207) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #23 pc 0037b635  /apex/com.android.art/lib/libart.so (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+2117) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #24 pc 00188e91  /apex/com.android.art/lib/libart.so (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+58609) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #25 pc 00142f62  /apex/com.android.art/lib/libart.so (ExecuteSwitchImplAsm+18) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #26 pc 00198584  /system/framework/framework.jar (android.app.ActivityThread.performLaunchActivity)
    #27 pc 0036fc0e  /apex/com.android.art/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.10914192770458939989)+254) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #28 pc 00379d9f  /apex/com.android.art/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+207) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #29 pc 0037b635  /apex/com.android.art/lib/libart.so (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+2117) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #30 pc 0018e793  /apex/com.android.art/lib/libart.so (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+81395) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #31 pc 00142f62  /apex/com.android.art/lib/libart.so (ExecuteSwitchImplAsm+18) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #32 pc 00198494  /system/framework/framework.jar (android.app.ActivityThread.handleLaunchActivity)
    #33 pc 0036fc0e  /apex/com.android.art/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.10914192770458939989)+254) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #34 pc 00379d9f  /apex/com.android.art/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+207) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #35 pc 0037aba0  /apex/com.android.art/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1040) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #36 pc 007a3017  /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+967) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #37 pc 00135921  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #38 pc 0028e18a  /system/framework/framework.jar (android.app.servertransaction.LaunchActivityItem.execute+134)
    #39 pc 007a335e  /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+1806) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #40 pc 00135921  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #41 pc 0029038e  /system/framework/framework.jar (android.app.servertransaction.TransactionExecutor.executeCallbacks+154)
    #42 pc 007a335e  /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+1806) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #43 pc 00135921  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #44 pc 002902ca  /system/framework/framework.jar (android.app.servertransaction.TransactionExecutor.execute+146)
    #45 pc 007a335e  /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+1806) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #46 pc 00135921  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #47 pc 0019785c  /system/framework/framework.jar (android.app.ActivityThread$H.handleMessage+96)
    #48 pc 007a335e  /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+1806) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #49 pc 00135921  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #50 pc 0036f462  /system/framework/framework.jar (offset 0x92b000) (android.os.Handler.dispatchMessage+38)
    #51 pc 007a335e  /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+1806) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #52 pc 00135921  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #53 pc 00396c4a  /system/framework/framework.jar (offset 0x92b000) (android.os.Looper.loop+482)
    #54 pc 0036fc82  /apex/com.android.art/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.10914192770458939989)+370) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #55 pc 00379d9f  /apex/com.android.art/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+207) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #56 pc 0037b635  /apex/com.android.art/lib/libart.so (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+2117) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #57 pc 0018e793  /apex/com.android.art/lib/libart.so (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+81395) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #58 pc 00142f62  /apex/com.android.art/lib/libart.so (ExecuteSwitchImplAsm+18) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #59 pc 001a17c0  /system/framework/framework.jar (android.app.ActivityThread.main)
    #60 pc 0036fc0e  /apex/com.android.art/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.10914192770458939989)+254) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #61 pc 00379c80  /apex/com.android.art/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+176) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #62 pc 0078d185  /apex/com.android.art/lib/libart.so (artQuickToInterpreterBridge+1061) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #63 pc 0014238d  /apex/com.android.art/lib/libart.so (art_quick_to_interpreter_bridge+77) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #64 pc 0013bc72  /apex/com.android.art/lib/libart.so (art_quick_invoke_static_stub+418) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #65 pc 001d0512  /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+258) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #66 pc 00631e68  /apex/com.android.art/lib/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned int)+1464) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #67 pc 0058a500  /apex/com.android.art/lib/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+80) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #68 pc 0008a778  /apex/com.android.art/javalib/x86/boot.oat (art_jni_trampoline+168) (BuildId: b386118502376442aa402e8d28c29e95a6eb8614)
    #69 pc 0013baa2  /apex/com.android.art/lib/libart.so (art_quick_invoke_stub+338) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #70 pc 001d0501  /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+241) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #71 pc 00386881  /apex/com.android.art/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+385) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #72 pc 0037abbe  /apex/com.android.art/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1070) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #73 pc 007a3017  /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+967) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #74 pc 00135921  /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #75 pc 00449446  /system/framework/framework.jar (offset 0x125d000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+22)
    #76 pc 0036fc82  /apex/com.android.art/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.10914192770458939989)+370) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #77 pc 00379c80  /apex/com.android.art/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+176) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #78 pc 0078d185  /apex/com.android.art/lib/libart.so (artQuickToInterpreterBridge+1061) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #79 pc 0014238d  /apex/com.android.art/lib/libart.so (art_quick_to_interpreter_bridge+77) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #80 pc 00893656  /system/framework/x86/boot-framework.oat (com.android.internal.os.ZygoteInit.main+2102) (BuildId: 6267c422a69286b583c337676c46b2cbf1d3b60c)
    #81 pc 0013bc72  /apex/com.android.art/lib/libart.so (art_quick_invoke_static_stub+418) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #82 pc 001d0512  /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+258) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #83 pc 006304b3  /apex/com.android.art/lib/libart.so (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, char*)+579) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #84 pc 00630985  /apex/com.android.art/lib/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, char*)+85) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #85 pc 004cf63f  /apex/com.android.art/lib/libart.so (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, char*)+735) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #86 pc 0008f90e  /system/lib/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+62) (BuildId: 93b8a76261a5d972cc69b8b7c6e74be9)
    #87 pc 00098c8e  /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+910) (BuildId: 93b8a76261a5d972cc69b8b7c6e74be9)
    #88 pc 00003804  /system/bin/app_process32 (main+1588) (BuildId: c5eedbfb6130af84c3db8e121fb1202e)
    #89 pc 000522e3  /apex/com.android.runtime/lib/bionic/libc.so (__libc_init+115) (BuildId: 6e3a0180fa6637b68c0d181c343e6806)

"Signal Catcher" sysTid=4672
    #00 pc 00000b99  [vdso] (__kernel_vsyscall+9)
    #01 pc 000ce821  /apex/com.android.runtime/lib/bionic/libc.so (__rt_sigtimedwait+33) (BuildId: 6e3a0180fa6637b68c0d181c343e6806)
    #02 pc 00086c55  /apex/com.android.runtime/lib/bionic/libc.so (sigwait+69) (BuildId: 6e3a0180fa6637b68c0d181c343e6806)
    #03 pc 00667d7d  /apex/com.android.art/lib/libart.so (art::SignalCatcher::WaitForSignal(art::Thread*, art::SignalSet&)+461) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #04 pc 0066675f  /apex/com.android.art/lib/libart.so (art::SignalCatcher::Run(void*)+479) (BuildId: bf39832c4acabbc939d5c516b6f1d211)
    #05 pc 000e6974  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+100) (BuildId: 6e3a0180fa6637b68c0d181c343e6806)
    #06 pc 00078567  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71) (BuildId: 6e3a0180fa6637b68c0d181c343e6806)

debuggerdはこの辺かなぁ

gdb ビルド
  1. MSYS2のインストール
  2. ターミナルからツールチェインを入れていく
    5  pacman -S base-devel
    7  pacman -S msys2-devel
    8  pacman -S mingw-w64-i686-toolchain
    9  pacman -S mingw-w64-x86_64-toolchain
   10  pacman -S make openssh git
   11  pacman -S vim
   42  pacman -S expr
   43  pacman -S isl
   44  pacman -S isl-devel
   89  pacman -S libgmp
   90  pacman -S gmp-devel
   91  pacman -S gmp
   94  pacman -S mpc mpfr mpc-devel mpfr-devel
  123  pacman -S mpc-devel
  124  pacman -S mpc
  1. mingw64のincludeとlibを指定する必要がある ./configure --host=x86_64-w64-mingw32 --enable-targets=all --disable-binutils --disable-ld --disable-gold --disable-gas --disable-sim --disable-gprof CXXFLAGS='-g3 -O0' CFLAGS='-g3 -O0 -I/mingw64/include' LDFLAGS=' -L/mingw64/lib';make

gdb で接続
adb root
adb forward tcp:5039 tcp:5039
gdbserver --attach :5039 `ps -ef | grep kotlin | grep -v grep | awk '{print $2}'`
$ cat .gdbinit
set pagination off
target remote 127.0.0.1:5039
thread apply all bt
c

コード
#include <jni.h>
#include <string>
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/syscall.h>
#include <iostream>
#include <iomanip>

#include <unwind.h>
#include <dlfcn.h>
#include <sstream>
#include <android/log.h>

struct BacktraceState
{
    void** current;
    void** end;
};
static _Unwind_Reason_Code unwindCallback(struct _Unwind_Context* context, void* arg)
{
    BacktraceState* state = static_cast<BacktraceState*>(arg);
    uintptr_t pc = _Unwind_GetIP(context);
    if (pc) {
        if (state->current == state->end) {
            return _URC_END_OF_STACK;
        } else {
            *state->current++ = reinterpret_cast<void*>(pc);
        }
    }
    return _URC_NO_REASON;
}
size_t captureBacktrace(void** buffer, size_t max)
{
    BacktraceState state = {buffer, buffer + max};
    _Unwind_Backtrace(unwindCallback, &state);

    return state.current - buffer;
}

void dumpBacktrace(std::ostream& os, void** buffer, size_t count)
{
    for (size_t idx = 0; idx < count; ++idx) {
        const void* addr = buffer[idx];
        const char* symbol = "";
        const char* blank = "";

        Dl_info info;
        if (dladdr(addr, &info) && info.dli_sname) {
            symbol = info.dli_sname;
        } else {
            symbol = blank;
        }
        os << "  #" << std::setw(2) << idx << ": " << addr << "  " << symbol << "\n";
    }
}
extern "C"
JNIEXPORT jstring JNICALL
Java_jp_co_try_1hard_kotlinsample_MainActivity_stackTrace(JNIEnv *env, jobject thiz) {
    const size_t max = 30;
    void* buffer[max];
    std::ostringstream oss;

    dumpBacktrace(oss, buffer, captureBacktrace(buffer, max));

    sleep(30);
    return env->NewStringUTF(oss.str().c_str());
}

javaはlibartで実行されている。

gdbで見れない理由はわからない

C++だけでWindow表示

動かすとこんな感じ

sample.png

アプリ起動の流れ

export CLASSPATH=/system/framework/am.jar ;exec /system/bin/app_process32 /system/bin com.android.commands.am.Am start -n jp.co.try_hard.empty_kotlin/.MainActivity

app_process

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0