Addr2line 64bit tool



根据本指南,我正在寻找Unity for android的il2cpp构建中的错误https://support.unity3d.com/hc/en-us/articles/115000292166-Symbolicate-Android-crash

它指定32位短地址0043a05c,在执行以下命令后

> ./arm-linux-androideabi-addr2line -f -C -e /Applications/Unity.app/Content/PlaybackEngines/AndroidPlayer/Variations/mono/Release/Symbols/armeabi-v7a/libunity.sym.so 0043a05c

解密为可读堆栈

Thread :: RunThreadWrapper (void *) 18: 06: 51.501: I / DEBUG (242):

但从那时起,Unity已经成功地进行了公平的开发,现在正在使用ARM64,在我崩溃的情况下,内存地址现在就像这个

00000000001f6f34

Unity具有32位和64位的解密库。两者的名称相同-libunity.sym.so,它们只是位于不同的文件夹中-armeabi-v7表示32位,arm64-v8a表示64位。

但问题是,当我试图向addr2line提供一个64位库时,它发誓

C:  Program Files  Unity  Hub  Editor  2019.2.19f1  Editor  Data  PlaybackEngines  AndroidPlayer  NDK  toolchains  arm-linux-androideabi-4.9  prebuilt  windows-x86_64  bin  arm64-v8a  libunity. sym.so: File format not recognized

当我使用32位lib时,一切正常

$ ./arm-linux-androideabi-addr2line -f -C -e "C:  Program Files  Unity  Hub  Editor  2019.2.19f1  Editor  Data  PlaybackEngines  AndroidPlayer  NDK  toolchains  arm-linux-androideabi -4.9  prebuilt  windows-x86_64  bin  armeabi-v7a  libunity.sym.so "00000000001f6f34
mbedtls :: SuiteTLSModule_MbedtlskUnitTestCategory :: Testpubkey_ParsePem_Return_Object_And_Raise_NoError_ForPEMEncodedObjectWithoutNullTerminationHelper :: RunImpl ()
??:?

但地址很可能是错误的,因为我正试图使用32位lib解密一个长地址。在调试模式下的崩溃单元本身告诉我这次崩溃的堆栈是不同的

00000000001f6f34 /data/app/сcom.myappName/lib/arm64/libunity.so (DebugStringToFilePostprocessedStacktrace (DebugStringToFileData const &) + 872)

在这方面,有几个问题。

  1. 是否有64位addr2line或类似的工具?还是已经32岁和64岁了,而我只是做错了什么?

  2. 为什么x64文件夹中的libunity.sym.so没有被addr2line读取,并表示不支持该文件格式?并且从文件夹x32是可读的,尽管名称和格式是相同的!(libunity.sym.so(

  3. 如果有更普通的工具,也许在guey中,可以选择是否解密,选择堆栈跟踪——她自己从堆栈跟踪中获得内存地址,并将其转换为可读的堆栈跟踪?

找到了64位所需的实用程序。32位实用程序位于此处

C:  Program Files  Unity  Hub  Editor  2019.2.19f1  Editor  Data  PlaybackEngines  AndroidPlayer  NDK  toolchains  arm-linux-androideabi-4.9  prebuilt  windows-x86_64  bin  arm-linux-androideabi- addr2line.exe

这里有64位

C:  Program Files  Unity  Hub  Editor  2019.2.19f1  Editor  Data  PlaybackEngines  AndroidPlayer  NDK  toolchains  aarch64-linux-android-4.9  prebuilt  windows-x86_64  bin  aarch64-linux-android- addr2line.exe

它的名字有点不同——aarch64-linux-android-addr2line。尽管该实用程序的名称不包含arm一词,但它成功地解密了arm64-v8下的堆栈种族,并通常感知arm64-v8的字符

其余命令相同,即

./aarch64-linux-android-addr2line -f -C -e "C:  Program Files  Unity  Hub  Editor  2019.2.19f1  Editor  Data  PlaybackEngines  AndroidPlayer  NDK  toolchains  arm-linux-androideabi- 4.9  prebuilt  windows-x86_64  bin  arm64-v8a  libunity.sym.so "00000000001f6f34

返回内存地址0000000000 1f6f34 的正常堆栈跟踪

最新更新