heap_dump 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|