| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
2
|
|
|
2
|
|
11
|
use strict; |
|
|
2
|
|
|
|
|
4
|
|
|
|
2
|
|
|
|
|
44
|
|
|
2
|
2
|
|
|
2
|
|
13
|
use warnings; |
|
|
2
|
|
|
|
|
4
|
|
|
|
2
|
|
|
|
|
55
|
|
|
3
|
|
|
|
|
|
|
package Devel::Debug::Server; |
|
4
|
|
|
|
|
|
|
|
|
5
|
2
|
|
|
2
|
|
527
|
use ZeroMQ qw/:all/; |
|
|
0
|
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
use Time::HiRes qw(usleep nanosleep); |
|
7
|
|
|
|
|
|
|
use Storable; |
|
8
|
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
my $NO_COMMAND = 'no_command'; |
|
10
|
|
|
|
|
|
|
our $READY_COMMAND = 'ready_command'; |
|
11
|
|
|
|
|
|
|
our $RUN_COMMAND = 'r'; |
|
12
|
|
|
|
|
|
|
our $STEP_COMMAND = 's'; |
|
13
|
|
|
|
|
|
|
our $WAIT_COMMAND = 'WAIT_CMD'; |
|
14
|
|
|
|
|
|
|
our $SET_BREAKPOINT_COMMAND = 'b'; |
|
15
|
|
|
|
|
|
|
our $REMOVE_BREAKPOINT_COMMAND = 'remove_command'; |
|
16
|
|
|
|
|
|
|
our $RETURN_COMMAND = 'return'; |
|
17
|
|
|
|
|
|
|
our $EVAL_COMMAND = 'e'; |
|
18
|
|
|
|
|
|
|
our $SUSPEND_COMMAND = 'suspend'; |
|
19
|
|
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
our $DEBUG_PROCESS_TYPE = 'DEBUG_PROCESS'; |
|
21
|
|
|
|
|
|
|
our $DEBUG_GUI_TYPE = 'DEBUG_GUI'; |
|
22
|
|
|
|
|
|
|
our $DEBUG_BREAKPOINT_TYPE = 'DEBUG_BREAKPOINT_GUI'; |
|
23
|
|
|
|
|
|
|
|
|
24
|
|
|
|
|
|
|
my $requester = undef; |
|
25
|
|
|
|
|
|
|
|
|
26
|
|
|
|
|
|
|
# ABSTRACT: communication module for debuging processes |
|
27
|
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
|
|
29
|
|
|
|
|
|
|
sub initZeroMQ{ |
|
30
|
|
|
|
|
|
|
if (!defined $requester){ |
|
31
|
|
|
|
|
|
|
my $cxt = ZeroMQ::Context->new; |
|
32
|
|
|
|
|
|
|
$requester = $cxt->socket(ZeroMQ::Constants::ZMQ_REQ); |
|
33
|
|
|
|
|
|
|
$requester->connect("tcp://127.0.0.1:5000"); |
|
34
|
|
|
|
|
|
|
} |
|
35
|
|
|
|
|
|
|
} |
|
36
|
|
|
|
|
|
|
|
|
37
|
|
|
|
|
|
|
|
|
38
|
|
|
|
|
|
|
sub send { |
|
39
|
|
|
|
|
|
|
my($data) = @_; |
|
40
|
|
|
|
|
|
|
|
|
41
|
|
|
|
|
|
|
my $programInfoStr = Storable::freeze($data); |
|
42
|
|
|
|
|
|
|
$requester->send($programInfoStr); |
|
43
|
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
my $reply = $requester->recv()->data(); |
|
45
|
|
|
|
|
|
|
return Storable::thaw($reply); |
|
46
|
|
|
|
|
|
|
} |
|
47
|
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
|
|
49
|
|
|
|
|
|
|
1; |