我有一个程序的调试版本(V8 JavaScript VM),我想了解某些类的实例是如何在内存中布局的.我可以漂亮地打印这样的结构:
(gdb) print thread_local
$6 = {
blocks_ = {
data_ = 0x868ceb0,
capacity_ = 7,
length_ = 1
},
entered_contexts_ = {
data_ = 0x868d828,
capacity_ = 1,
length_ = 1
},
saved_contexts_ = {
data_ = 0x868d838,
capacity_ = 1,
length_ = 1
},
spare_ = 0x0,
ignore_out_of_memory_ = false,
call_depth_ = 1,
handle_scope_data_ = {
next = 0x0,
limit = 0x0,
level = 0
}
}
Run Code Online (Sandbox Code Playgroud)
但我想知道相对于对象的开始,那些不同的成员(块,entered_contexts等)在物理上的位置.在基于Solaris的系统上,mdb可以为C结构执行此操作,如下所示:
> ::print -at port_event_t
0 port_event_t {
0 …Run Code Online (Sandbox Code Playgroud)