File: examine.sh

package info (click to toggle)
zshdb 0.05%2Bgit20101031-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 2,104 kB
  • sloc: sh: 5,563; makefile: 337
file content (52 lines) | stat: -rw-r--r-- 1,878 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# -*- shell-script -*-
# examine.sh: Examine debugger command.
#
#   Copyright (C) 2008, 2010 Rocky Bernstein  rocky@gnu.org
#
#   zshdb is free software; you can redistribute it and/or modify it under
#   the terms of the GNU General Public License as published by the Free
#   Software Foundation; either version 2, or (at your option) any later
#   version.
#
#   zshdb is distributed in the hope that it will be useful, but WITHOUT ANY
#   WARRANTY; without even the implied warranty of MERCHANTABILITY or
#   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
#   for more details.
#   
#   You should have received a copy of the GNU General Public License along
#   with zshdb; see the file COPYING.  If not, write to the Free Software
#   Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA.

_Dbg_help_add 'examine' \
"examine EXPR -- Print value of an expression via \'typeset', \`let' and failing these, eval. 

Single variables and arithmetic expressions do not need leading $ for
their value is to be substituted. However if neither these, variables
need $ to have their value substituted."

function _Dbg_do_examine {
  typeset _Dbg_expr; _Dbg_expr=${@:-"$_Dbg_last_x_args"}
  typeset _Dbg_result
  if [[ -z $_Dbg_expr ]] then 
      _Dbg_msg "$_Dbg_expr"      
  elif _Dbg_defined $_Dbg_expr ; then
    _Dbg_result=$(typeset -p $_Dbg_expr)
    _Dbg_msg "$_Dbg_result"
  elif _Dbg_is_function "$_Dbg_expr" $_Dbg_set_debugging; then 
    _Dbg_result=$(typeset -f $_Dbg_expr)
    _Dbg_msg "$_Dbg_result"
  else 
    typeset -i _Dbg_rc
    . ${_Dbg_libdir}/lib/set-d-vars.sh
    eval let _Dbg_result=$_Dbg_expr 2>/dev/null; _Dbg_rc=$?
    _Dbg_set_debugger_internal
    if (( $_Dbg_rc != 0 )) ; then
	_Dbg_do_print "$_Dbg_expr"
    else
	_Dbg_msg "$_Dbg_result"
    fi
  fi
  _Dbg_last_x_args="$_Dbg_x_args"
}

_Dbg_alias_add 'x' 'examine'