# Perl debugger [![Build Status](https://travis-ci.org/KES777/Devel-DebugHooks.svg?branch=master)](https://travis-ci.org/KES777/Devel-DebugHooks)

> Free evaluation is permitted. Production and commercial use require a paid
> license. Redistribution is not permitted.

## Support Perl Debugger

[Purchase Perl Debugger](https://buy.stripe.com/8x2aEW3Z97pp7aV15o7Zu01) for CA$170 CAD as a one-time payment.

If you support this product, you also support the Perl community. Ten percent of Perl Debugger revenue will be donated to [The Perl & Raku Foundation](https://perlfoundation.org/donate.html).

The source is available for free evaluation, investigation, learning,
teaching, and educational use. Regular, ongoing, production, or commercial
use requires a paid license. See [LICENSE](LICENSE) for the complete terms.

## How to run:

	perl -d:DebugHooks::Terminal script.pl

	## Debug remotely
	# FIX harcoded server:port at
	# Devel::DebugHooks::Server.pm:107
	# on remote server with IP 1.2.3.4
	perl -d:DebugHooks::Server script.pl
	# on local
	dclient.pl 1.2.3.4 9000
	# if server on same machine
	dclient.pl




## Quick guide for commands:

	s - single step. Trace into
	n - single step. Trace over
	r - return from sub.
	go - run script until the end or next trap
	go N - run script to 'N' line
	q - quit debugger
	R - restart debugging. Works only while remotely debugging script runned under uwsgi

	f - list all files
	f regex - list all files that match regex
	f N - set 'N' file as current

	l . - list source at current step
	l - list next source page
	l $coderef - deparce subroutine
	l -N - list source for N frame
	l &N - deparse subroutine for N frame

	vars - show variables visible from current step
	vars N - show variables visible from N frame
	vars N $var - show value from $var variable at N frame

	t [$x|@x|%x] - trace and log into 'vars.log' access to given variable

	T - stack trace.
	T N - show only N last frames
	NOTICE: stacktrace will shows GOTO!!! frames also

	b - list all traps
	b . - set trap at current step
	b . condition - set conditional trap
	b [+|-][file:|M:]N - set trap at given file:line
		+ - enable trap
		- - disable trap
		file - absolute path to file
		M - number from 'f' command output
		N - line number at file
	save|load - Save/Load info about traps into ~/.dbginit file

	a expr - set action
	A expr - remove action
	w expr - set watch
	W expr - remove watch

	expr - evaluate 'expr' from user's script perspective
	e expr - evaluate 'expr' from user's script perspective and Data::Dump::pp results

	ge - run editor for current file
	ge file:N - run editor for given file


This module implement for shortcut invader operator `x::x;` this is same as  `$DB::single = 1;`

Installation:
cpanm -v -n --installdeps -L ./local DB-Hooks-0.01_05.tar.gz
cpanm -v -n -L ./local DB-Hooks-0.01_05.tar.gz

How to build a new version:
perl Build.PL
Change $VERSION at lib/DB/Hooks.pm
./Build dist
