2 # Display syscalls made by this process in real time
4 require './proc-lib.pl';
6 if ($config{'trace_java'}) {
7 &ui_print_header(undef, $text{'trace_title'}, "", "trace");
10 &ui_print_unbuffered_header(undef, $text{'trace_title'}, "", "trace");
12 %pinfo = &process_info($in{'pid'});
13 &can_edit_process($pinfo{'user'}) || &error($text{'edit_ecannot'});
15 print "<b>$text{'edit_gone'}</b> <p>\n";
16 &ui_print_footer("", $text{'index_return'});
20 $syscalls = &ui_form_start("trace.cgi", "post")."\n".
21 &ui_hidden("pid", $in{'pid'})."\n".
22 "<b>$text{'trace_syscalls'}</b>\n".
23 &ui_radio("all", defined($in{'all'}) ? $in{'all'} : 1,
24 [ [ 1, $text{'trace_all'} ],
25 [ 0, $text{'trace_sel'} ] ])."\n".
26 &ui_textbox("syscalls", $in{'syscalls'}, 40)."\n".
27 &ui_submit($text{'trace_change'})."\n".
30 if ($config{'trace_java'}) {
31 # Output Java applet to show trace
32 print "<b>",&text('trace_doing', "<tt>$pinfo{'args'}</tt>"),"</b><br>\n";
34 print "<applet code=Tracer width=800 height=300>\n";
36 $id = int(rand()*1000000000);
37 print "<param name=url value='tail.cgi?pid=$in{'pid'}&id=$id&syscalls=",
38 $in{'all'} ? "" : &urlize($in{'syscalls'}),"'>\n";
39 print "<param name=killurl value='killtail.cgi?id=$id'>\n";
40 if ($main::session_id) {
41 print "<param name=session value=\"sid=$main::session_id\">\n";
43 print "$text{'trace_sorry'}<p>\n";
47 # Just display here as text
48 @syscalls = $in{'all'} ? ( ) : split(/\s+/, $in{'syscalls'});
49 $trace = &open_process_trace($in{'pid'},
51 $fmt = "%-8.8s %-11.11s %-80.80s %-10.10s";
52 print "<b>",&text('trace_start', "<tt>$pinfo{'args'}</tt>"),"</b><br>\n";
55 printf "$fmt\n", "Time", "System Call", "Parameters", "Return";
56 printf "$fmt\n", ("-"x8), ("-"x11), ("-"x80), ("-"x10);
57 while($action = &read_process_trace($trace)) {
58 local $tm = strftime("%H:%M:%S", localtime($action->{'time'}));
59 printf "$fmt\n", $tm, $action->{'call'},
60 join(", ", @{$action->{'args'}}),
64 &close_process_trace($trace);
65 if (!kill(0, $in{'pid'})) {
66 print "<b>$text{'trace_done'}</b><br>\n";
69 print "<b>$text{'trace_failed'}</b><br>\n";
73 &ui_print_footer("edit_proc.cgi?$in{'pid'}", $text{'edit_return'},
74 "", $text{'index_return'});