问题报告¶
问题报告途径¶
如果在使用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中调试时需要的信息如下图。
其中崩溃原因为
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)。
在Android Studio中调试时需要的信息如下图。
在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中调试时需要的信息如下图。
在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