thread-dump 0.0.3 → 0.0.5

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.
@@ -6,6 +6,8 @@ static VALUE rb_cDumper;
6
6
  static VALUE backtrace(rb_thread_t th)
7
7
  {
8
8
  char buf[BUFSIZ];
9
+ char buf2[BUFSIZ];
10
+ char otherbuf[BUFSIZ];
9
11
  VALUE ary;
10
12
  NODE *n;
11
13
  struct FRAME *frame;
@@ -14,41 +16,29 @@ static VALUE backtrace(rb_thread_t th)
14
16
  frame = th->frame;
15
17
  ary = rb_ary_new();
16
18
 
17
- rb_ary_push(ary, rb_obj_id(th->thread));
18
-
19
19
  if (n) {
20
- snprintf(buf, BUFSIZ, "%s:%d", n->nd_file, nd_line(n));
21
- rb_ary_push(ary, rb_str_new2(buf));
22
- }
23
-
24
- /*for (; frame && (n = frame->node); frame = frame->prev) {
25
- if (frame->prev && frame->prev->last_func) {
26
- if (frame->prev->node == n) continue;
27
- snprintf(buf, BUFSIZ, "%s:%d:in `%s'",
28
- n->nd_file, nd_line(n),
29
- rb_id2name(frame->prev->last_func));
30
- }
31
- else {
20
+ if(nd_line(n) && n->nd_file){
32
21
  snprintf(buf, BUFSIZ, "%s:%d", n->nd_file, nd_line(n));
33
- }
34
- rb_ary_push(ary, rb_str_new2(buf));
35
- }*/
22
+ rb_ary_push(ary, rb_str_new2(buf));
23
+ }
24
+ }
36
25
 
37
26
  return ary;
38
27
  }
39
28
 
29
+
40
30
  static VALUE
41
31
  dump()
42
32
  {
43
33
  VALUE ary_dump;
44
34
  VALUE curr_rb_thread;
45
- struct thread* curr_thread;
46
- struct thread* th;
35
+ struct rb_thread* curr_thread;
36
+ struct rb_thread* th;
47
37
 
48
38
  ary_dump = rb_ary_new();
49
39
 
50
40
  curr_rb_thread = rb_thread_current();
51
- Data_Get_Struct(curr_rb_thread, struct thread, curr_thread);
41
+ Data_Get_Struct(curr_rb_thread, struct rb_thread, curr_thread);
52
42
 
53
43
  if (curr_thread) {
54
44
  FOREACH_THREAD_FROM(curr_thread, th) {
@@ -66,5 +56,7 @@ Init_thread_dumper()
66
56
  {
67
57
  rb_mThreadDump = rb_define_module("ThreadDump");
68
58
  rb_cDumper = rb_define_class_under(rb_mThreadDump, "Dumper", rb_cObject);
69
- rb_define_method(rb_cDumper, "dump", dump, 0);
59
+ rb_define_singleton_method(rb_cDumper, "dump", dump, 0);
70
60
  }
61
+
62
+
@@ -7,75 +7,5 @@
7
7
  #define FOREACH_THREAD_FROM(f,x) x = f; do { x = x->next;
8
8
  #define END_FOREACH_FROM(f,x) } while (x != f)
9
9
 
10
- typedef jmp_buf rb_jmpbuf_t;
11
-
12
- enum thread_status {
13
- THREAD_TO_KILL,
14
- THREAD_RUNNABLE,
15
- THREAD_STOPPED,
16
- THREAD_KILLED,
17
- };
18
-
19
- typedef struct thread * rb_thread_t;
20
-
21
- struct thread {
22
- struct thread *next, *prev;
23
- rb_jmpbuf_t context;
24
- #ifdef SAVE_WIN32_EXCEPTION_LIST
25
- DWORD win32_exception_list;
26
- #endif
27
-
28
- VALUE result;
29
-
30
- long stk_len;
31
- long stk_max;
32
- VALUE *stk_ptr;
33
- VALUE *stk_pos;
34
- #ifdef __ia64__
35
- VALUE *bstr_ptr;
36
- long bstr_len;
37
- #endif
38
-
39
- struct FRAME *frame;
40
- struct SCOPE *scope;
41
- struct RVarmap *dyna_vars;
42
- struct BLOCK *block;
43
- struct iter *iter;
44
- struct tag *tag;
45
- VALUE klass;
46
- VALUE wrapper;
47
- NODE *cref;
48
-
49
- int flags; /* misc. states (vmode/rb_trap_immediate/raised) */
50
-
51
- NODE *node;
52
-
53
- int tracing;
54
- VALUE errinfo;
55
- VALUE last_status;
56
- VALUE last_line;
57
- VALUE last_match;
58
-
59
- int safe;
60
-
61
- enum thread_status status;
62
- int wait_for;
63
- int fd;
64
- fd_set readfds;
65
- fd_set writefds;
66
- fd_set exceptfds;
67
- int select_value;
68
- double delay;
69
- rb_thread_t join;
70
-
71
- int abort;
72
- int priority;
73
- VALUE thgroup;
74
-
75
- st_table *locals;
76
-
77
- VALUE thread;
78
- };
79
-
80
- static rb_thread_t curr_thread = 0;
81
10
  static VALUE backtrace(rb_thread_t);
11
+ // static VALUE backtrace(rb_thread_t th, int lev);
@@ -3,7 +3,7 @@ require 'thread_dumper'
3
3
  module ThreadDump
4
4
  VERSION_MAJOR = 0
5
5
  VERSION_MINOR = 0
6
- VERSION_SUB = 3
6
+ VERSION_SUB = 5
7
7
 
8
8
  VERSION = "#{VERSION_MAJOR}.#{VERSION_MINOR}.#{VERSION_SUB}"
9
9
  end
@@ -18,7 +18,7 @@ module ThreadDump
18
18
  def dump_target=(dump_target)
19
19
  @@dump_target = dump_target
20
20
  end
21
-
21
+
22
22
  def output_format
23
23
  @@output_format ||= :text
24
24
  end
@@ -44,19 +44,18 @@ module ThreadDump
44
44
  def self.write_threads
45
45
  out_arr = []
46
46
 
47
- ThreadDump::Dumper.new.dump.each do |thread_info|
47
+ ThreadDump::Dumper.dump.each do |thread_info|
48
48
  if ThreadDump::Config.output_format == :html
49
49
  out_arr << "<dt>#{thread_info[1]}</dt><dd>#{thread_info[0]}</dd>"
50
50
  else
51
51
  out_arr << "Thread #{thread_info[0]}: #{thread_info[1]}"
52
52
  end
53
53
  end
54
-
55
54
  max_l_out_arr = out_arr.map { |out| out.size }.max
56
55
  fout = STDERR
57
56
 
58
57
  if ThreadDump::Config.dump_target == :file
59
- fout = File.open("/tmp/#{$$}.ruby_threads.html", "w")
58
+ fout = File.open("/tmp/#{$$}.ruby_threads.html", "w")
60
59
  end
61
60
 
62
61
  out_arr.each do |out|
@@ -76,6 +75,6 @@ end
76
75
 
77
76
  trap("QUIT") do
78
77
  Thread.start do
79
- ThreadDump::Monitor.save_threads
78
+ ThreadDump::Monitor.write_threads
80
79
  end
81
80
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
2
+ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: thread-dump
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.3
7
- date: 2007-08-09 00:00:00 -07:00
6
+ version: 0.0.5
7
+ date: 2007-10-30 00:00:00 -07:00
8
8
  summary: Utility which will cause thread dumps during ctrl-break of Ruby process.
9
9
  require_paths:
10
10
  - lib
11
11
  email:
12
12
  homepage:
13
- rubyforge_project: thread-dump
13
+ rubyforge_project:
14
14
  description:
15
15
  autorequire: lib
16
16
  default_executable:
@@ -27,7 +27,7 @@ signing_key:
27
27
  cert_chain:
28
28
  post_install_message:
29
29
  authors:
30
- - Greg Fodor
30
+ - Greg Fodor and Bryan Duxbury
31
31
  files:
32
32
  - ext/thread_dumper.c
33
33
  - ext/thread_dumper.h