heap_dump 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +26 -0
- data/Rakefile +1 -0
- data/ext/heap_dump/heap_dump.c +2 -1
- data/lib/heap_dump/version.rb +1 -1
- metadata +8 -8
data/README.md
CHANGED
@@ -63,6 +63,32 @@ cat dump.json | sed 's/^[,\[]//;s/\]$//;s/^{"id"/{"_id"/' | mongoimport -d datab
|
|
63
63
|
Note that even small dumps usually contain a few hundred thousands objects, so do not forget to add some indexes.
|
64
64
|
|
65
65
|
|
66
|
+
### Output example/format
|
67
|
+
|
68
|
+
Format is not stable yet, but looks like this:
|
69
|
+
|
70
|
+
```json
|
71
|
+
|
72
|
+
[{"id":"_ROOTS_","stack_and_registers":[70313628419480,70313628419480,70313628419480,"trace",70313627751860],"classes":[70313627319820,70313628530860]}
|
73
|
+
,{"id":70365602702620,"bt":"T_ARRAY","val":[">=",70365602705060]}
|
74
|
+
,{"id":70365602847060,"bt":"T_ARRAY","val":[]}
|
75
|
+
,{"id":70365602702660,"bt":"T_DATA","type_name":"iseq","size":564,"name":"activate_spec","filename":"/Users/vasfed/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb","line":485,"type":"method","refs_array_id":70365602847060,"coverage":null,"klass":70365602821240,"cref_stack":70365602848300,"defined_method_id":12672}
|
76
|
+
,{"id":70365602702680,"bt":"T_STRING","val":"activate_spec"}
|
77
|
+
,{"id":70365602821260,"bt":"T_HASH","val":{"EXEEXT":"","RUBY_SO_NAME":"ruby.1.9.1","arch":"x86_64-darwin11.2.0","bindir":70365603049640,"libdir":70365603050600,"ruby_install_name":"ruby","ruby_version":"1.9.1","rubylibprefix":70365603112080,"sitedir":70365603112440,"sitelibdir":70365603048920,"datadir":70365603049880,"vendordir":70365603112500,"vendorlibdir":70365603048800}}
|
78
|
+
,{"id":70365602712560,"bt":"T_CLASS","name":"URI::HTTPS","methods":{},"ivs":{"__classpath__":"URI::HTTPS","DEFAULT_PORT":443},"super":70365602771440}
|
79
|
+
,{"id":70365602771400,"bt":"T_CLASS","name":"Class","methods":{"build":70365602782860},"ivs":{"__attached__":70365602771440},"super":70365611597900}
|
80
|
+
,{"id":70365602717060,"bt":"T_DATA","type_name":"proc","size":72,"is_lambda":0,"blockprocval":null,"envval":70365602712440,"iseq":{"id":70365600821896,"name":"block in <class:FileList>","filename":"/Users/vasfed/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/file_list.rb","line":743,"type":"block","refs_array_id":70365611724600,"coverage":null,"klass":null,"cref_stack":70365611799480,"defined_method_id":0}}
|
81
|
+
,{"id":70365603045160,"bt":"T_DATA","type_name":"VM/env","size":128,"refs":[]}
|
82
|
+
,{"id":70365613258980,"bt":"T_ICLASS","name":"Object","methods":{"==":"(CFUNC)",">":"(CFUNC)",">=":"(CFUNC)","<":"(CFUNC)","<=":"(CFUNC)","between?":"(CFUNC)"},"ivs":{"__classid__":"Comparable"},"super":70365613259120}
|
83
|
+
]
|
84
|
+
```
|
85
|
+
etc.
|
86
|
+
|
87
|
+
bt field is ruby builtin type name.
|
88
|
+
|
89
|
+
Where available - val/refs/ivs/etc. field present with hash/array of references.
|
90
|
+
Long numbers usually are object ids.
|
91
|
+
|
66
92
|
## Contributing
|
67
93
|
|
68
94
|
1. Fork it
|
data/Rakefile
CHANGED
data/ext/heap_dump/heap_dump.c
CHANGED
@@ -597,7 +597,7 @@ static void dump_data_if_known(VALUE obj, walk_ctx_t *ctx){
|
|
597
597
|
int i = 0;
|
598
598
|
yg_cstring("refs");
|
599
599
|
yajl_gen_array_open(ctx->yajl);
|
600
|
-
for(; i
|
600
|
+
for(; i < env->env_size; i++)
|
601
601
|
yg_id(env->env[i]);
|
602
602
|
yajl_gen_array_close(ctx->yajl);
|
603
603
|
return;
|
@@ -1258,6 +1258,7 @@ void heapdump_dump(const char* filename){
|
|
1258
1258
|
|
1259
1259
|
dump_machine_context(ctx);
|
1260
1260
|
flush_yajl(ctx);
|
1261
|
+
fprintf(ctx->file, "\n");
|
1261
1262
|
|
1262
1263
|
struct gc_list *list;
|
1263
1264
|
/* mark protected global variables */
|
data/lib/heap_dump/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heap_dump
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-31 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby-internal
|
16
|
-
requirement: &
|
16
|
+
requirement: &70250067931780 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.8.5
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70250067931780
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: yajl-ruby
|
27
|
-
requirement: &
|
27
|
+
requirement: &70250067931200 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '1.1'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70250067931200
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake-compiler
|
38
|
-
requirement: &
|
38
|
+
requirement: &70250067930760 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70250067930760
|
47
47
|
description: dump ruby 1.9 heap contents
|
48
48
|
email:
|
49
49
|
- vasilyfedoseyev@gmail.com
|