问题报告

问题报告途径

如果在使用EasyAR Sense时遇到问题,可以搜索 常见问题

如果常见问题中没有找到,可以搜索 问答 ,如果没有找到相应的问题,或者仍然没有解决问题,请在问答中提问。

如果问题涉及到EasyAR开发者账号或云服务符号等敏感信息,请通过 联系我们 中的客户服务邮件地址和我们联系。

问题报告需要的信息

  • EasyAR Sense版本

    在调用 Engine.initialize 后,日志中会打出此版本,如

    EasyAR Sense (Windows-x86_64) Version 4.4.0.9251-e69a7c46b
    
  • 引起问题的重现步骤,如果不能稳定触发,请注明

  • 崩溃原因、代码运行栈和动态库加载地址,如果问题为崩溃

    不同操作系统和开发环境获取方式不同,下面将分别描述。

    由于现代操作系统通常使用地址空间布局随机化技术(ASLR),每次运行时,动态库加载地址会不同,代码运行栈和动态库加载地址需要在同一次运行中获得。

    如果代码运行栈中没有EasyAR库,则可能问题并不在EasyAR Sense中。

Windows上的崩溃信息

在Visual Studio中调试时需要的信息如下图。

../_images/image111.png

其中崩溃原因为

Exception thrown at 0x00007FFB7747317B (EasyAR.dll) in HelloAR.exe: 0xC0000005: Access violation writing location 0x0000000000009C40.

代码运行栈为

>   EasyAR.dll!00007ffb7747317b()   Unknown
    EasyAR.dll!00007ffb774719cc()   Unknown
    EasyAR.dll!00007ffb77477db3()   Unknown
    EasyAR.dll!00007ffb77474eb3()   Unknown
    ucrtbase.dll!00007ffbfee910b2() Unknown
    kernel32.dll!00007ffc009f7c24() Unknown
    ntdll.dll!00007ffc0148d721()    Unknown

动态库加载地址为

0x00007FFB75BC0000

Android上的崩溃信息

在Android Studio中调试Android的Native程序时,需要在Configuration设置中将Debugger - Debug type改为Dual (Java + Native)。

../_images/image1121.png

在Android Studio中调试时需要的信息如下图。

../_images/image113.png

在lldb中输入bt,可以获得崩溃原因和代码运行栈,如下

(lldb) bt
* thread #16, name = 'samples.helloar', stop reason = signal SIGSEGV: invalid address (fault address: 0x9c40)
* frame #0: 0x0000004922f3a1d8 libEasyAR.so`___lldb_unnamed_symbol3056$$libEasyAR.so + 6088
    frame #1: 0x0000004922f38568 libEasyAR.so`___lldb_unnamed_symbol3054$$libEasyAR.so + 288
    frame #2: 0x0000004922f347f8 libEasyAR.so`___lldb_unnamed_symbol2876$$libEasyAR.so + 332
    frame #3: 0x00000049be2390c8 libc.so`__pthread_start(void*) + 40
    frame #4: 0x00000049be1f04f8 libc.so`__start_thread + 72

在lldb中输入image dump sections libEasyAR.so,可以获得动态库.text节加载地址,如下

(lldb) image dump sections libEasyAR.so
...
  SectID     Type             Load Address                             Perm File Off.  File Size  Flags      Section Name
...
  0x00000010 code             [0x0000004922e30cfc-0x0000004923654558)  r-x  0x00256cfc 0x0082385c 0x00000006 libEasyAR.so..text
...

MacOS/iOS上的崩溃信息

在XCode中调试时需要的信息如下图。

../_images/image114.png

在lldb中输入bt,可以获得崩溃原因和代码运行栈,如下

(lldb) bt
* thread #11, stop reason = EXC_BAD_ACCESS (code=1, address=0x9c40)
* frame #0: 0x00000001057e7cb0 easyar`___lldb_unnamed_symbol2693$$easyar + 6984
    frame #1: 0x00000001057e5e14 easyar`___lldb_unnamed_symbol2692$$easyar + 276
    frame #2: 0x00000001057e2500 easyar`___lldb_unnamed_symbol2532$$easyar + 360
    frame #3: 0x00000001f3d60bfc libsystem_pthread.dylib`_pthread_start + 320

在lldb中输入image list easyar或者image list libEasyAR.dylib,可以获得动态库加载地址,如下

(lldb) image list easyar
[  0] DF06BDD8-A8AF-3982-897D-A906EE229A4F 0x0000000105730000 /Users/<user>/Library/Developer/Xcode/DerivedData/helloar-bpvpobshgxnnwwdiryfjufioysag/Build/Products/Debug-iphoneos/helloar.app/Frameworks/easyar.framework/easyar