Changeset 9695


Ignore:
Timestamp:
12/14/09 05:50:38 (2 years ago)
Author:
szabgab
Message:

add initial version of the debugger

Location:
trunk/Padre
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Padre/Changes

    r9677 r9695  
    22 
    330.53 To Be Released 
     4    - Add initial version of a debugger using Debug::Client (SZABGAB) 
     5 
    46 
    570.52 2009.12.14 
  • trunk/Padre/Makefile.PL

    r9586 r9695  
    6565requires 'DBD::SQLite'           => '1.10'; 
    6666requires 'DBI'                   => '1.58'; 
     67requires 'Debug::Client'         => '0.06'; 
    6768requires 'Devel::Dumpvar'        => '0.04'; 
    6869requires 'Devel::Refactor'       => '0.05'; 
  • trunk/Padre/lib/Padre/Action/Run.pm

    r9685 r9695  
    140140    ); 
    141141 
     142 
     143 
     144    Padre::Action->new( 
     145        name         => 'debug.run_document', 
     146        need_editor  => 1, 
     147        need_runable => 1, 
     148        need_file    => 1, 
     149        label        => Wx::gettext('Start Debugger (Debug::Client)'), 
     150        comment      => Wx::gettext( 'Run the current document through the Debug::Client.' ), 
     151        #shortcut     => 'Shift-F5', 
     152        need_editor  => 1, 
     153        menu_event   => sub { 
     154            $_[0]->debug_perl; 
     155        }, 
     156    ); 
     157 
     158    Padre::Action->new( 
     159        name         => 'debug.step_in', 
     160        need_editor  => 1, 
     161        need_runable => 1, 
     162        need_file    => 1, 
     163        label        => Wx::gettext('Debugger Step In'), 
     164        comment      => Wx::gettext( 'Run the current document through the Debug::Client.' ), 
     165        #shortcut     => 'Shift-F5', 
     166        need_editor  => 1, 
     167        menu_event   => sub { 
     168            $_[0]->debug_perl_step_in; 
     169        }, 
     170    ); 
     171 
     172    Padre::Action->new( 
     173        name         => 'debug.evaluate_expression', 
     174        need_editor  => 1, 
     175        need_runable => 1, 
     176        need_file    => 1, 
     177        label        => Wx::gettext('Debugger Evaluate Expression'), 
     178        comment      => Wx::gettext( 'Run the current document through the Debug::Client.' ), 
     179        #shortcut     => 'Shift-F5', 
     180        need_editor  => 1, 
     181        menu_event   => sub { 
     182            $_[0]->debug_perl_evaluate_expression; 
     183        }, 
     184    ); 
     185 
     186    Padre::Action->new( 
     187        name         => 'debug.quit', 
     188        need_editor  => 1, 
     189        need_runable => 1, 
     190        need_file    => 1, 
     191        label        => Wx::gettext('Quit Debugger'), 
     192        comment      => Wx::gettext( 'Run the current document through the Debug::Client.' ), 
     193        #shortcut     => 'Shift-F5', 
     194        need_editor  => 1, 
     195        menu_event   => sub { 
     196            $_[0]->debug_perl_quit; 
     197        }, 
     198    ); 
     199 
     200 
     201 
    142202    return $self; 
    143203} 
  • trunk/Padre/lib/Padre/Wx/Main.pm

    r9685 r9695  
    18921892    my $self     = shift; 
    18931893    my $document = $self->current->document; 
    1894     unless ( $document->isa('Perl::Document::Perl') ) { 
     1894 
     1895    unless ( $document->isa('Padre::Document::Perl') ) { 
    18951896        return $self->error( Wx::gettext("Not a Perl document") ); 
    18961897    } 
     
    19161917    # Set up the debugger 
    19171918    my $host = 'localhost'; 
    1918     my $port = 12345; 
     1919    my $port = 12345 + int rand(1000); # TODO make this configurable? 
    19191920 
    19201921    # $self->_setup_debugger($host, $port); 
     
    19241925    my $perl = Padre::Perl::cperl(); 
    19251926    $self->run_command(qq["$perl" -d "$filename"]); 
    1926  
     1927     
     1928    require Debug::Client; 
     1929    my $debugger = Debug::Client->new(host => $host, port => $port); 
     1930    $debugger->listen; 
     1931    $self->{_debugger_} = $debugger; 
     1932    my $out = $debugger->get; 
     1933    print $out; 
     1934#   $self->show_output(1); 
     1935#   $self->output->clear; 
     1936#   $self->output->AppendText($out); 
     1937     
     1938    return; 
     1939} 
     1940 
     1941 
     1942sub debug_perl_quit { 
     1943    my $self     = shift; 
     1944    return if not $self->{_debugger_}; 
     1945     
     1946    print scalar $self->{_debugger_}->quit; 
     1947    delete $self->{_debugger_}; 
     1948 
     1949    return; 
     1950} 
     1951 
     1952sub debug_perl_step_in { 
     1953    my $self     = shift; 
     1954    return if not $self->{_debugger_}; 
     1955     
     1956    print scalar $self->{_debugger_}->step_in; 
     1957 
     1958    return; 
     1959} 
     1960 
     1961sub debug_perl_evaluate_expression { 
     1962    my $self     = shift; 
     1963    return if not $self->{_debugger_}; 
     1964     
     1965    my $expression = $self->prompt( 
     1966        Wx::gettext("Expression:"), 
     1967        Wx::gettext("Expr"), 
     1968        "EVAL_EXPRESSION" 
     1969    ); 
     1970    print scalar $self->{_debugger_}->execute_code($expression); 
     1971 
     1972    return; 
    19271973} 
    19281974 
  • trunk/Padre/lib/Padre/Wx/Menu/Run.pm

    r9685 r9695  
    5959        $self, 
    6060        'run.run_this_test', 
     61    ); 
     62 
     63    $self->AppendSeparator; 
     64 
     65    $self->{debug_start} = $self->add_menu_action( 
     66        $self, 
     67        'debug.run_document', 
     68    ); 
     69    $self->{debug_step_in} = $self->add_menu_action( 
     70        $self, 
     71        'debug.step_in', 
     72    ); 
     73 
     74    $self->{debug_step_in} = $self->add_menu_action( 
     75        $self, 
     76        'debug.evaluate_expression', 
     77    ); 
     78 
     79    $self->{debug_quit} = $self->add_menu_action( 
     80        $self, 
     81        'debug.quit', 
    6182    ); 
    6283 
Note: See TracChangeset for help on using the changeset viewer.