# -*- shell-script -*- # continue.sh - gdb-like "continue" debugger command # # Copyright (C) 2002-2006, 2008, 2010, 2016 Rocky Bernstein # # # This program 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. # # This program 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 this program; see the file COPYING. If not, write to # the Free Software Foundation, 59 Temple Place, Suite 330, Boston, # MA 02111 USA. _Dbg_help_add continue \ '**continue** [*loc* | **-** ] Continue script execution. If *loc* or *-* is not given, continue until the next breakpoint or the end of program is reached. If **-** is given, then debugging will be turned off after continuing causing your program to run at full speed. If **loc* is given, a temporary breakpoint is set at the location.' proc _Dbg_do_continue { _Dbg_not_running && return 3 if (( $# == 0 )) { global _Dbg_continue_rc := '0' return 0 } typeset filename typeset -i line_number typeset full_filename if [[ $1 == '-' ]] { global _Dbg_restore_debug_trap := '0' global _Dbg_continue_rc := '0' return 0 } _Dbg_linespec_setup $1 global _Dbg_last_cmd := ''continue'' if [[ -n "$full_filename" ]] { if (( line_number == 0 )) { _Dbg_errmsg 'There is no line 0 to continue at.' return 1 } else { _Dbg_check_line $line_number $full_filename (( $? == 0 )) && \ _Dbg_set_brkpt $full_filename $line_number 1 1 global _Dbg_continue_rc := '0' return 0 } } else { _Dbg_file_not_read_in $filename return 2 } } _Dbg_alias_add 'c' 'continue' _Dbg_alias_add 'cont' 'continue' (CommandList children: [ (C {(_Dbg_help_add)} {(ControlFlow_Continue continue)} { (SQ <"**continue** [*loc* | **-** ]\n"> <"\n"> <"Continue script execution.\n"> <"\n"> <"If *loc* or *-* is not given, continue until the next breakpoint or\n"> <"the end of program is reached. If **-** is given, then debugging will\n"> <"be turned off after continuing causing your program to run at full\n"> <"speed.\n"> <"\n"> <"If **loc* is given, a temporary breakpoint is set at the location."> ) } ) (FuncDef name: _Dbg_do_continue body: (BraceGroup children: [ (AndOr children: [ (C {(_Dbg_not_running)}) (ControlFlow token: arg_word:{(3)}) ] op_id: Op_DAmp ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Pound "$#")}) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_continue_rc) op: Equal rhs: {(0)} spids: [116] ) ] spids: [116] ) (ControlFlow token: arg_word:{(0)}) ] spids: [-1 113] ) ] spids: [-1 125] ) (C {(typeset)} {(filename)}) (C {(typeset)} {(-i)} {(line_number)}) (C {(typeset)} {(full_filename)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number "$1")} right: {(SQ <->)} ) ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_restore_debug_trap) op: Equal rhs: {(0)} spids: [165] ) ] spids: [165] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_continue_rc) op: Equal rhs: {(0)} spids: [169] ) ] spids: [169] ) (ControlFlow token: arg_word:{(0)}) ] spids: [-1 162] ) ] spids: [-1 178] ) (C {(_Dbg_linespec_setup)} {(DQ ($ VSub_Number "$1"))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_last_cmd) op: Equal rhs: {(SQ )} spids: [190] ) ] spids: [190] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_n child: {(DQ ($ VSub_Name "$full_filename"))} ) ) terminator: ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithVarRef name:line_number) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: ) ] action: [ (C {(_Dbg_errmsg)} {(SQ <"There is no line 0 to continue at.">)}) (ControlFlow token: arg_word: {(1)} ) ] spids: [-1 228] ) ] else_action: [ (C {(_Dbg_check_line)} {($ VSub_Name "$line_number")} {(DQ ($ VSub_Name "$full_filename"))} ) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_QMark "$?")}) right: (ArithWord w:{(Lit_Digits 0)}) ) ) (C {(_Dbg_set_brkpt)} {(DQ ($ VSub_Name "$full_filename"))} {(DQ ($ VSub_Name "$line_number"))} {(1)} {(1)} ) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_continue_rc) op: Equal rhs: {(0)} spids: [285] ) ] spids: [285] ) (ControlFlow token: arg_word: {(0)} ) ] spids: [243 294] ) ] spids: [-1 210] ) ] else_action: [ (C {(_Dbg_file_not_read_in)} {(DQ ($ VSub_Name "$filename"))}) (ControlFlow token: arg_word:{(2)}) ] spids: [297 312] ) ] spids: [84] ) spids: [80 83] ) (C {(_Dbg_alias_add)} {(SQ )} {(SQ )}) (C {(_Dbg_alias_add)} {(SQ )} {(SQ )}) ] )