Revision history for Devel-ebug

0.66      2026-09-26 21:30:13 -0600
  - Add an optional JSON wire format, selected with the `serializer`
    attribute or the DEVEL_EBUG_SERIALIZER environment variable, so that
    frontends which are not written in Perl can speak the protocol
    without implementing YAML.  Cpanel::JSON::XS is used when it is
    installed, falling back to JSON::PP (gh#59)
  - Exit quietly when the frontend disconnects instead of warning about
    an undefined value in pack (gh#59)
  - Pass the debugged program's command-line arguments through
    exactly as given, so they may contain spaces or shell
    metacharacters: add an `args` attribute to Devel::ebug, and have
    ebug and ebug_server use it when given more than one argument
    (gh#31, gh#60)
  - Have the backend started by load() connect back to a port the
    frontend got from the operating system, passed in the new
    DEVEL_EBUG_CONNECT environment variable, so concurrent sessions can
    no longer collide over a port.  A backend waiting for a frontend to
    attach (as under ebug_server) now turns away a frontend with the
    wrong secret instead of dying, which could kill an unrelated session
    (gh#62, gh#64)
  - Start debugging much faster: load(), and so starting ebug,
    restarting and undo, no longer spends a second waiting to connect
    to the backend, taking about 0.05s instead of just over a second
    (gh#64)
  - Add interrupt(), to stop a running program from a frontend which
    does not share a terminal with it, along with run_nowait(),
    wait_for_stop() and running() so that a frontend can keep control
    while the program runs.  pid() returns the program's own process id,
    which differs from the process load() started when the program is
    run through the shell (gh#61)
  - Report a clear error, which can be caught, when the program being
    debugged goes away without the debugger's help (killed, crashed, or
    POSIX::_exit), instead of the frontend dying silently from SIGPIPE
    (gh#30, gh#67)
  - Remove a stray bareword NULL filehandle that the backend opened, to
    no purpose, when output is not captured (ebug_server -keepio)
    (gh#63, gh#68)

0.65      2026-09-21 19:55:44 -0600
  - Fix ^C (SIGINT) while running killing the console instead of
    dropping back into the debugger (gh#27, gh#55)
  - Document the ebug console's interactive commands (gh#32, gh#56)
  - Document that `perl -d:ebug` is not a supported way to invoke the
    debugger (gh#25, gh#56)
  - Fix 'next' permanently losing the ability to stop the debuggee
    after stepping over a sub whose call chain dies internally and
    catches its own exception (as eg. Tk widgets do for feature
    detection); this could show up as a Tk window appearing too
    early, or the debugger hanging altogether (gh#26)

0.64      2021-07-10 15:42:56 -0600
  - Remove dependency on FindBin and File::Which (gh#51)
  - Improve backend fallback; no longer require
    ebug_backend_perl be in the PATH (gh#49, gh#51)
  - Fix ebug_server and ebug_client documentation to
    use underscores (gh#50, gh#51)

0.63      2020-07-27 13:15:16 -0600
  - Fixed intermittent testing failure relating to Expect (gh#20)

0.62_01   2020-07-21 03:43:36 -0600
  - Diagnostic release

0.61_01   2020-07-16 09:50:27 -0600
  - Diagnostic release

0.60      2020-05-04 15:05:27 -0600
  - New maintainer.
  - Fixed compatability with YAML 1.30 (gh#19, gh#22)

0.59 2017.03.12
     - Fix long-standing bug when -l used on #! line

0.58 2017.03.06
     - DZil improvements
     - Make scripts consistently use #!/usr/bin/perl (maybe env would be better)

0.57 2016.08.11
     - Set up travisci
     - Localize $/ to avoid hang (plicease)
     - Add dist metadata. Some other things (plicease)
     - Fix to work with newer stacktrace (picease)

0.56 2014.04.16
     - Converted to Dist::Zilla
     - Minor fixes (thanks hobbestigrou!)

0.55 2013.03.19
     - Extra version to add missing files :)

0.54 2013.03.19
     - Add 'break on file loading' feature (thanks jchassler!)
     - Fix commands starting with ^h

0.53 2012.02.29
     - Add tests for codeline tracking and subrefs
     - Fix YAML vs YAML::Syck (dunno)
     - Had to disable return-value-override feature
     - Fix tests to work with new Carp
     - Use findbin to load backend
     - Improve argument param handling

0.52 2011.11.08
     - Oops, forgot to update CHANGES for 0.51 :)
     - Slight refactor of backend executable by pmurias (thanks!)
     - Extract backend connection code into separate method
     - Shuffle executables into bin/
     - Fix wantarray test for older perls
     - Fix some windows path usage

0.50 Thu Oct 20 20:15:05 EDT 2011
     - Fix failing tests
     - Add YAML build dependency

0.49 Thu Oct 16 20:07:34 BST 2008
     - Add a human-readable license to the documentation

0.48 Mon Apr 30 20:37:06 CEST 2007
     - Added ebug-server(1), a remote debugger server
     - Added ebug-client(1), a remote debugger client
     - Fixed [?h] input handling so Perl expression with 'h'
       or '?' won't wrongly invoke help
     - Added check for PERL_DEBUG_DONT_RELAY_IO environment
       variable to keep STDOUT/STDERR on server side, instead of
       relaying to debugger frontend
     - Switched YAML.pm to YAML::Syck for performance reasons
     - All patches by Taisuke Yamada

0.47 Mon Mar 19 19:43:35 GMT 2007
     - add break_points_with_condition and all_break_points_with_condition,
       make break_point and break_point_subroutine return a line number,
       make break_points optionally take a filename, make eval return
       whether there was an exception (patch by Mattia Barbon)

0.46 Mon Mar  6 20:52:22 GMT 2006
     - workaround for bless globs (thanks to SAMV)

0.45 Fri Sep  2 15:01:42 BST 2005
     - moved subroutine into basic information
     - moved ebug_http into its own distribution (patch by Jesse Vincent)

0.44 Wed Aug 31 16:36:03 BST 2005
     - require PPI 1.003 (and work with new API)
     - update ebug_http to new Catalyst (removes warning)
     - fix bug with "run" stopping after returning back to main::
     - new run.t

0.43 Mon May 16 18:55:37 BST 2005
     - document that we don't quite work under 5.8.0 (thanks Simon)
     - Devel::ebug does not handle signals under Windows atm, so skip
       the tests for now (spotted by LTjake)
     - updated to Prototype 1.2.0
     - try and find our templates a little harder
     - you can set set break points in ebug_http by clicking on a line
       number (and delete them by clickling on the little stop sign icon)
     - you can now evaluate Perl expressions in the web interface
     - major attempt to make the web interface prettier (icons!)
     - make some attempt at caching static files
     - interactive evaluation is now the default in ebug(1) (patch by
       Jesse Vincent)
     - ebug(1) now ships with an interactive console mode (patch by 
       Jesse Vincent)

0.42 Thu Apr 28 17:42:00 BST 2005
     - fix ebug_http error message
     - fix bug in ebug_http where the pretty printing was getting
       confused if the debugged program had inline POD (spotted by
       sri)
     - HTML tooltips are now in monospace, have a sensible "Not
       defined" error message, and show lists or hashes depending on
       the type. Scalars no longer have a --- prefix
     - fixed a bug with a missing 'Devel::ebug::Build' (spotted by
       obra)
     - use Catalyst 5.10 and its new template bundling (completely
       obsoleting the above change)
     - removed obsolete "examine" code from Devel::ebug::HTTP and
       template

0.41 Tue Apr 19 21:04:18 BST 2005
     - remove "work around" as it is fixed in Catalyst 5.03
     - fix small HTML bug (spotted by LTjake)
     - new xmlns + language declarations (thanks to LTjake)
     - minor tweak to generate valid HTML

0.40 Tue Apr 19 17:13:44 BST 2005
     - whoops, we were depending on Catalyst 4 to still be around
     - "work around" Catalyst bug with external hostnames
     - updated prereqs
     - update docs for ebug_http

0.39 Tue Apr 19 13:16:51 BST 2005
     - major refactoring of ebug_http to now use Catalyst 5.0
     - we now capture STDOUT, STDERR - their contents are available
       using the new output method
     - ebug now shows STDOUT, STDERR
     - ebug_http now shows STDOUT, STDERR
     - no longer stop processing as the program exits
     - tab completion of variables in ebug (x $var), as suggested by
       Autrijus
     - in ebug_http, new dynamic tooltips to show the value of
       variables on the current line, using prototype and overlib
     - "return" not in a subroutine is now the same as "run" instead
       of giving an error (spotted by clkao)
     - documented that ebug and ebug_http can run programs with
       arguments by quoting them (spotted by clkao)
     - minor output patch for ebug.t
     - tweaked the test to skip Test::Expect under Windows
     - new yaml method to return the YAML representation of a variable
     - improved undo tests
     - better use of PPI (spotted by Alias)
     - install the templates / JavaScript / CSS / images to sitelib

0.38 Tue Apr 12 14:47:24 BST 2005
     - optimisation: only scan for plugins on start of backend
     - be sure to use strict and warnings in the plugins
     - in ebug and ebug_http, allow examining a variable using YAML

0.37 Tue Apr  5 22:55:18 CST 2005
     - moved ebug code into Devel::ebug::Console
     - moved the backend into Devel::ebug::Backend
     - major refactoring of Devel::ebug::Backend: move everything to
       subroutines, pass the context around
     - major refactoring to place functionality in plugins (patch by
       Simon Wistow)
     - fix a problem with code references (spotted by nadim) - we now
       use YAML instead of Storable
     - make stack_trace_human deal with undef strings, list refs, hash
       refs, and objects in arguments
     - new pad_human method for a human-readable pad view
     - in ebug_http, allow you to set simple break points and run
     - be sure to produce valid XHTML
     - added support for invoking the debugger by sending a signal
       (requested by Sam Vilain)

0.36 Sun Apr  3 20:56:56 CST 2005
     - total rearrange of Devel::ebug::HTTP and increase in
       documentation (thanks to Mark Fowler)
     - create valid XML no matter what the variables or code contains
       (thanks to Mark Fowler)
     - correct the =head1 NAME of ebug and ebug_http (spotted by Smylers)
     - stack_trace_human is now more robust
     - Test::Expect doesn't work under Windows, so don't require or
       use it in Windows environments - this means we now require
       Module::Build (spotted by Johan Lindstrom)
     - make codelines() remove DOS as well as UNIX newlines (spotted
       by Johan Lindstrom)
     - in ebug, l 40 will to set the number of lines to list (patch by
       Johan Lindstrom)

0.35 Sat Apr  2 23:34:56 CST 2005
     - added undo method which undos the last action
     - in ebug_http, using the back button in the browser actually
       steps backwards in the program (suggested by autrijus)
     - in ebug_http, use monikers for blessed objects and make the
       stack trace use a smaller font
     - in ebug, restart the program instead of exiting at the end of
       the program (suggested by obra)
     - in ebug_http, restart the program instead of stopping the
       webserver at the end of the program
     - added stack_trace_human method for a human-readable stack trace
     - pointed out ebug and ebug_http in the docs

0.34 Sat Apr  2 15:39:25 CST 2005
     - give ebug_http a hashbang line (spotted by obra, who complains
       all the time ;-)
     - make Devel::ebug::HTTP return full HTTP requests
     - basic docs for ebug and ebug_http
     - ebug_http now opens the browser for you under Mac OS X and
       Windows (patch by Johan Lindstrom)
     - ebug now has the ability to always list the lines around the IP
       - L toggles (patch by Johan Lindstrom)
     - fix a problem where we were displaying the wrong codelines in
       modules with POD
     - now use the environment instead of the command line to pass the
       secret for portability (patch by Johan Lindstrom)
     - in ebug_http, we now jump to the current line (patch by Johan
       Lindstrom)
     - in ebug_http, make our actions POSTs, for they change state
     - in ebug_http, cache the call to PPI::HTML
     - in ebug_http, link module names to search.cpan.org
     - in ebug_http, syntax highlight single and double-quoted strings
     - tweak Devel::ebug's introductory docs
     - added break_point_delete method which deletes a break point
     - added stack_trace method which provides basic stack trace
       information using Devel::StackTrace
     - in ebug_http, added a slightly ugly stack trace 
     - added return(@values) method to return your own values from a
       subroutine, instead of what the subroutine would have returned

0.33 Fri Apr  1 16:40:43 CST 2005
     - update the manifest, doh (it's been a long week)

0.32 Fri Apr  1 14:09:00 CST 2005
     - added "ebug_http" to script_files so that it will get installed

0.31 Fri Apr  1 13:36:00 CST 2005
     - added return(), which returns from a subroutine
     - fix bug with 'l' showing inaccurate lines in ebug
     - added filenames() method which returns a list of the filenames
       of all the files currently loaded
     - added a String::Koremutake test
     - added a new finished() method to return whether the program has
       finished running (spotted by clkao)
     - added ebug_http, which presents a web interface to debugging

0.30 Thu Mar 31 00:13:13 CST 2005
     - autrijus noticed that 0.29 shipped with a broken ebug. to keep
       me from embarassing myself in future, there is now an ebug.t
       which uses the newly-released Test::Expect
     - codelines() now returns an array
     - codelines() now returns the whole file if no line numbers are
       passed
     - codelines() can now return the source code of files other than
       the currently executing program
     - added some security to the TCP connection (port, secret)
     - added a new "y" to ebug, which YAML::Dump's variables
     - minor code cleanups

0.29 Tue Mar 29 21:02:59 CST 2005
     - initial release
