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 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
@@ -7,6 +7,7 @@ Rake::ExtensionTask.new('heap_dump')
7
7
 
8
8
  desc "Simple dump test,just to check if extension compiles and does not segfault on simple dump"
9
9
  task :test => :compile do
10
+ require "bundler/setup"
10
11
  require 'heap_dump'
11
12
  puts "Dumping..."
12
13
  HeapDump.dump
@@ -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 > env->env_size; 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 */
@@ -1,3 +1,3 @@
1
1
  module HeapDump
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
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.8
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-30 00:00:00.000000000Z
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: &70110343222520 !ruby/object:Gem::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: *70110343222520
24
+ version_requirements: *70250067931780
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: yajl-ruby
27
- requirement: &70110343221760 !ruby/object:Gem::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: *70110343221760
35
+ version_requirements: *70250067931200
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake-compiler
38
- requirement: &70110343221160 !ruby/object:Gem::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: *70110343221160
46
+ version_requirements: *70250067930760
47
47
  description: dump ruby 1.9 heap contents
48
48
  email:
49
49
  - vasilyfedoseyev@gmail.com