我在尝试在Android上的gdb中显示嵌套命名空间时遇到问题。我试图调查ART框架(主要包含在模拟器上的libart.so和libandroid_runtime.so中的符号)
我有兴趣调查课程" Class"在ART。它位于art :: mirror :: namespace。
之下这是我的设置:
1) Built a Marshmallow version of the AOSP with debug symbols
2) Launched the emulator with my AOSP build
3) Used gdbclient to connect to a running process (com.android.musicfx-- arbitrary, but uses the Android runtime)
4) Used set solib-search-path in gdb to the same place my library symbols are.
这会加载libart.so和libandroid_runtime.so(其他很多)。但是,每当我尝试将一段内存转换并打印到" Class"类,它失败了:
(gdb) p/x *(art::mirror::Class*) 0xbed1af38
No type "mirror" within class or namespace "art".
"反射镜"绝对是'#34;艺术"。它是Java< - >的基础。 ART运行时中的C转换:请参阅http://androidxref.com/6.0.0_r1/xref/art/runtime/mirror/class.cc和http://androidxref.com/6.0.0_r1/xref/art/runtime/mirror/class.h
我哪里错了? https://vaioco.github.io/art/art-part-i/的作者基本上做了同样的事情,似乎对他有用。