Mercurial > octave
annotate libinterp/corefcn/debug.cc @ 25402:ef2b9d4abf4a
eliminate some global variables from tree_evaluator
* debug.cc (F__db_next_breakpoint_quiet__): Define with DEFMETHOD.
* octave-cmd.cc (octave_cmd_debug::execute):
Call F__db_next_breakpoint_quiet__ as an interpreter method.
* pt-eval.h, pt-eval.cc (tree_evaluator::m_current_frame,
tree_evaluator::m_debug_mode,
tree_evaluator::m_quiet_breakpoint_flag): New data members to replace
static data members.
(tree_evaluator::current_frame, tree_evaluator::debug_mode,
tree_evaluator::quiet_breakpoint_flag): New functions.
Adapat usage.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 22 May 2018 11:39:44 -0400 |
parents | bc5f225bc578 |
children | d6050ba12c0c |
rev | line source |
---|---|
3805 | 1 /* |
2 | |
25054
6652d3823428
maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents:
24738
diff
changeset
|
3 Copyright (C) 2001-2018 Ben Sapp |
11523 | 4 Copyright (C) 2007-2009 John Swensen |
3805 | 5 |
6 This file is part of Octave. | |
7 | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24279
diff
changeset
|
8 Octave is free software: you can redistribute it and/or modify it |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
9 under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24279
diff
changeset
|
10 the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
11 (at your option) any later version. |
3805 | 12 |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
13 Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
14 WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
16 GNU General Public License for more details. |
3805 | 17 |
18 You should have received a copy of the GNU General Public License | |
7016 | 19 along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24279
diff
changeset
|
20 <https://www.gnu.org/licenses/>. |
3805 | 21 |
22 */ | |
23137
334119c390b3
move bp_table class to separate file
John W. Eaton <jwe@octave.org>
parents:
23127
diff
changeset
|
23 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21703
diff
changeset
|
24 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21259
diff
changeset
|
25 # include "config.h" |
3805 | 26 #endif |
27 | |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
28 #include <deque> |
3895 | 29 #include <fstream> |
10839 | 30 #include <iomanip> |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
31 #include <iostream> |
21703
4bf980861fd6
Allow breakpoints in nested functions, and in mixed subfunctions (bug #47917).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21662
diff
changeset
|
32 #include <limits> |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
33 #include <set> |
3948 | 34 #include <string> |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
35 |
23137
334119c390b3
move bp_table class to separate file
John W. Eaton <jwe@octave.org>
parents:
23127
diff
changeset
|
36 #include "dNDArray.h" |
7082 | 37 |
23137
334119c390b3
move bp_table class to separate file
John W. Eaton <jwe@octave.org>
parents:
23127
diff
changeset
|
38 #include "bp-table.h" |
22091
0f6fc2ec3b1a
move call_stack class to a separate file
John W. Eaton <jwe@octave.org>
parents:
22051
diff
changeset
|
39 #include "call-stack.h" |
3805 | 40 #include "defun.h" |
41 #include "error.h" | |
23137
334119c390b3
move bp_table class to separate file
John W. Eaton <jwe@octave.org>
parents:
23127
diff
changeset
|
42 #include "errwarn.h" |
21258
b248c28d9a7b
Make dbstatus return correct filename and function name (bug #41540).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21200
diff
changeset
|
43 #include "file-ops.h" |
7082 | 44 #include "help.h" |
3805 | 45 #include "input.h" |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
46 #include "interpreter-private.h" |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
47 #include "interpreter.h" |
20925
667861ffffab
Extracted header class octave-preserve-stream-state from utils.{cc/h}.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
20918
diff
changeset
|
48 #include "octave-preserve-stream-state.h" |
3805 | 49 #include "ov-usr-fcn.h" |
50 #include "ov.h" | |
23137
334119c390b3
move bp_table class to separate file
John W. Eaton <jwe@octave.org>
parents:
23127
diff
changeset
|
51 #include "ovl.h" |
334119c390b3
move bp_table class to separate file
John W. Eaton <jwe@octave.org>
parents:
23127
diff
changeset
|
52 #include "pager.h" |
334119c390b3
move bp_table class to separate file
John W. Eaton <jwe@octave.org>
parents:
23127
diff
changeset
|
53 #include "parse.h" |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
54 #include "pt-eval.h" |
3805 | 55 #include "unwind-prot.h" |
17818
f1b59ef34eda
attempt to avoid setting persistent state on i/o streams (bug #40396)
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
56 #include "utils.h" |
23137
334119c390b3
move bp_table class to separate file
John W. Eaton <jwe@octave.org>
parents:
23127
diff
changeset
|
57 #include "utils.h" |
3805 | 58 #include "variables.h" |
59 | |
7082 | 60 static octave_value |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
61 intmap_to_ov (const octave::bp_table::intmap& line) |
7082 | 62 { |
63 int idx = 0; | |
7083 | 64 |
65 NDArray retval (dim_vector (1, line.size ())); | |
66 | |
67 for (size_t i = 0; i < line.size (); i++) | |
7082 | 68 { |
25342
416856765a55
be more careful with using auto in place of explicit const iterator decls
John W. Eaton <jwe@octave.org>
parents:
25337
diff
changeset
|
69 octave::bp_table::const_intmap_iterator p = line.find (i); |
7083 | 70 |
7082 | 71 if (p != line.end ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
72 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
73 int lineno = p->second; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
74 retval(idx++) = lineno; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
75 } |
7082 | 76 } |
7083 | 77 |
7082 | 78 retval.resize (dim_vector (1, idx)); |
7083 | 79 |
7082 | 80 return retval; |
81 } | |
3895 | 82 |
25346
dd416c31761e
access bp_table through interpreter where possible
John W. Eaton <jwe@octave.org>
parents:
25342
diff
changeset
|
83 DEFMETHOD (dbstop, interp, args, , |
dd416c31761e
access bp_table through interpreter where possible
John W. Eaton <jwe@octave.org>
parents:
25342
diff
changeset
|
84 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
85 @deftypefn {} {} dbstop @var{func} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
86 @deftypefnx {} {} dbstop @var{func} @var{line} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
87 @deftypefnx {} {} dbstop @var{func} @var{line1} @var{line2} @dots{} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
88 @deftypefnx {} {} dbstop @var{line1} @dots{} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
89 @deftypefnx {} {} dbstop in @var{func} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
90 @deftypefnx {} {} dbstop in @var{func} at @var{line} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
91 @deftypefnx {} {} dbstop in @var{func} at @var{line} if "@var{condition}" |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
92 @deftypefnx {} {} dbstop if @var{event} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
93 @deftypefnx {} {} dbstop if @var{event} @var{ID} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
94 @deftypefnx {} {} dbstop (@var{bp_struct}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
95 @deftypefnx {} {@var{rline} =} dbstop @dots{} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
96 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
97 Set breakpoints for the built-in debugger. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
98 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
99 @var{func} is the name of a function on the current @code{path}. When |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
100 already in debug mode the @var{func} argument can be omitted and the current |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
101 function will be used. Breakpoints at subfunctions are set with the scope |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
102 operator @samp{>}. For example, If @file{file.m} has a subfunction |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
103 @code{func2}, then a breakpoint in @code{func2} can be specified by |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
104 @code{file>func2}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
105 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
106 @var{line} is the line number at which to break. If @var{line} is not |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
107 specified, it defaults to the first executable line in the file |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
108 @file{func.m}. Multiple lines can be specified in a single command; when |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
109 function syntax is used, the lines may also be passed as a single vector |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
110 argument (@code{[@var{line1}, @var{line2}, @dots{}]}). |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
111 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
112 @var{condition} is any Octave expression that can be evaluated in the code |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
113 context that exists at the breakpoint. When the breakpoint is encountered, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
114 @var{condition} will be evaluated, and execution will stop if |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
115 @var{condition} is true. If @var{condition} cannot be evaluated, for |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
116 example because it refers to an undefined variable, an error will be thrown. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
117 Expressions with side effects (such as @code{y++ > 1}) will alter |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
118 variables, and should generally be avoided. Conditions containing quotes |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
119 (@samp{"}, @samp{'}) or comment characters (@samp{#}, @samp{%}) must be |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
120 enclosed in quotes. (This does not apply to conditions entered from the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
121 editor's context menu.) For example: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
122 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
123 @example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
124 dbstop in strread at 209 if 'any (format == "%f")' |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
125 @end example |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
126 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
127 The form specifying @var{event} does not cause a specific breakpoint at a |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
128 given function and line number. Instead it causes debug mode to be entered |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
129 when certain unexpected events are encountered. Possible values are |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
130 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
131 @table @code |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
132 @item error |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
133 Stop when an error is reported. This is equivalent to specifying |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
134 both @code{debug_on_error (true)} and @code{debug_on_interrupt (true)}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
135 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
136 @item caught error |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
137 Stop when an error is caught by a try-catch block (not yet implemented). |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
138 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
139 @item interrupt |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
140 Stop when an interrupt (@kbd{Ctrl-C}) occurs. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
141 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
142 @item naninf |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
143 Stop when code returns a non-finite value (not yet implemented). |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
144 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
145 @item warning |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
146 Stop when a warning is reported. This is equivalent to specifying |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
147 @code{debug_on_warning (true)}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
148 @end table |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
149 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
150 The events @code{error}, @code{caught error}, and @code{warning} can all be |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
151 followed by a string specifying an error ID or warning ID@. If that is |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
152 done, only errors with the specified ID will cause execution to stop. To |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
153 stop on one of a set of IDs, multiple @code{dbstop} commands must be |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
154 issued. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
155 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
156 Breakpoints and events can be removed using the @code{dbclear} command with |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
157 the same syntax. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
158 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
159 It is possible to save all breakpoints and restore them at once by issuing |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
160 the commands @code{bp_state = dbstatus; @dots{}; dbstop (bp_state)}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
161 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
162 The optional output @var{rline} is the real line number where the breakpoint |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
163 was set. This can differ from the specified line if the line is not |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
164 executable. For example, if a breakpoint attempted on a blank line then |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
165 Octave will set the real breakpoint at the next executable line. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
166 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
167 When a file is re-parsed, such as when it is modified outside the GUI, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
168 all breakpoints within the file are cleared. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
169 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
170 @seealso{dbclear, dbstatus, dbstep, debug_on_error, debug_on_warning, debug_on_interrupt} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
171 @end deftypefn */) |
3805 | 172 { |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
173 octave::bp_table::intmap retmap; |
21259 | 174 std::string symbol_name = ""; // stays empty for "dbstop if error" etc |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
175 octave::bp_table::intmap lines; |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
176 std::string condition = ""; |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
177 octave_value retval; |
7083 | 178 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
179 octave::tree_evaluator& tw = interp.get_evaluator (); |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
180 |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
181 octave::bp_table& bptab = tw.get_bp_table (); |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
182 |
23584
7ed6b258db91
maint: Deprecate is_map and replace with isstruct.
Rik <rik@octave.org>
parents:
23577
diff
changeset
|
183 if (args.length() >= 1 && ! args(0).isstruct ()) |
21259 | 184 { |
185 // explicit function / line / condition | |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
186 bptab.parse_dbfunction_params ("dbstop", args, symbol_name, |
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
187 lines, condition); |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
188 |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
189 if (lines.size () == 0) |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
190 lines[0] = 1; |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
191 |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
192 if (symbol_name != "") |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
193 { |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
194 retmap = bptab.add_breakpoint (symbol_name, lines, condition); |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
195 retval = intmap_to_ov (retmap); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
196 } |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
197 } |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
198 else if (args.length () != 1) |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
199 { |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
200 print_usage (); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
201 } |
21259 | 202 else // structure of the form output by dbstatus |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
203 { |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
204 octave_map mv = args(0).map_value (); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
205 if (mv.isfield ("bkpt") || mv.isfield ("errs") || mv.isfield ("warn") |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
206 || mv.isfield ("intr")) |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
207 { |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
208 bptab.dbstop_process_map_args (mv); |
6646 | 209 |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
210 // Replace mv by "bkpt", to use the processing below. |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
211 octave_value bkpt = mv.getfield ("bkpt"); |
23577
80c42f4cca13
maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents:
23576
diff
changeset
|
212 if (bkpt.isempty ()) |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
213 mv = octave_map (); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
214 else |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
215 { |
23576
00e518162fda
maint: Deprecate is_cell and replace with iscell.
Rik <rik@octave.org>
parents:
23553
diff
changeset
|
216 if (bkpt.iscell () && bkpt.cell_value ().numel () > 0 |
23584
7ed6b258db91
maint: Deprecate is_map and replace with isstruct.
Rik <rik@octave.org>
parents:
23577
diff
changeset
|
217 && bkpt.cell_value () (0).isstruct ()) |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
218 mv = bkpt.cell_value () (0).map_value (); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
219 else |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
220 { |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
221 error ("dbstop: invalid 'bkpt' field"); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
222 mv = octave_map (); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
223 } |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
224 } |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
225 } |
23577
80c42f4cca13
maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents:
23576
diff
changeset
|
226 if (mv.isempty ()) |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
227 { |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
228 // no changes requested. Occurs if "errs" non-empty but "bkpt" empty |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
229 } |
21259 | 230 else if (! mv.isfield ("name") || ! mv.isfield ("line")) |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
231 { |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
232 error ("dbstop: Cell array must contain fields 'name' and 'line'"); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
233 retval = octave_value (0); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
234 } |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
235 else |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
236 { |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
237 bool use_cond = mv.isfield ("cond"); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
238 Cell name = mv.getfield ("name"); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
239 Cell line = mv.getfield ("line"); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
240 Cell cond = (use_cond ? mv.getfield ("cond") : Cell ()); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
241 std::string unconditional = ""; |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
242 for (octave_idx_type i = 0; i < line.numel (); i++) |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
243 { |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
244 lines [0] = line(i).double_value (); |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
245 bptab.add_breakpoint (name(i).string_value (), lines, |
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
246 (use_cond |
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
247 ? cond(i).string_value () |
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
248 : unconditional)); |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
249 } |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
250 retval = octave_value (line.numel ()); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
251 } |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
252 } |
7787
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
253 |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
254 return retval; |
3805 | 255 } |
256 | |
25346
dd416c31761e
access bp_table through interpreter where possible
John W. Eaton <jwe@octave.org>
parents:
25342
diff
changeset
|
257 DEFMETHOD (dbclear, interp, args, , |
dd416c31761e
access bp_table through interpreter where possible
John W. Eaton <jwe@octave.org>
parents:
25342
diff
changeset
|
258 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
259 @deftypefn {} {} dbclear @var{func} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
260 @deftypefnx {} {} dbclear @var{func} @var{line} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
261 @deftypefnx {} {} dbclear @var{func} @var{line1} @var{line2} @dots{} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
262 @deftypefnx {} {} dbclear @var{line} @dots{} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
263 @deftypefnx {} {} dbclear all |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
264 @deftypefnx {} {} dbclear in @var{func} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
265 @deftypefnx {} {} dbclear in @var{func} at @var{line} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
266 @deftypefnx {} {} dbclear if @var{event} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
267 @deftypefnx {} {} dbclear ("@var{func}") |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
268 @deftypefnx {} {} dbclear ("@var{func}", @var{line}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
269 @deftypefnx {} {} dbclear ("@var{func}", @var{line1}, @var{line2}, @dots{}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
270 @deftypefnx {} {} dbclear ("@var{func}", @var{line1}, @dots{}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
271 @deftypefnx {} {} dbclear (@var{line}, @dots{}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
272 @deftypefnx {} {} dbclear ("all") |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
273 Delete a breakpoint at line number @var{line} in the function @var{func}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
274 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
275 Arguments are |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
276 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
277 @table @var |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
278 @item func |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
279 Function name as a string variable. When already in debug mode this |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
280 argument can be omitted and the current function will be used. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
281 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
282 @item line |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
283 Line number from which to remove a breakpoint. Multiple lines may be given |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
284 as separate arguments or as a vector. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
285 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
286 @item event |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
287 An event such as @code{error}, @code{interrupt}, or @code{warning} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
288 (@pxref{XREFdbstop,,dbstop} for details). |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
289 @end table |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
290 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
291 When called without a line number specification all breakpoints in the named |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
292 function are cleared. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
293 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
294 If the requested line is not a breakpoint no action is performed. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
295 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
296 The special keyword @qcode{"all"} will clear all breakpoints from all |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
297 files. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
298 @seealso{dbstop, dbstatus, dbwhere} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
299 @end deftypefn */) |
3805 | 300 { |
21259 | 301 std::string symbol_name = ""; // stays empty for "dbclear if error" etc |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
302 octave::bp_table::intmap lines; |
21259 | 303 std::string dummy; // "if" condition -- only used for dbstop |
7083 | 304 |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
305 int nargin = args.length (); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
306 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
307 octave::tree_evaluator& tw = interp.get_evaluator (); |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
308 |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
309 octave::bp_table& bptab = tw.get_bp_table (); |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
310 |
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
311 bptab.parse_dbfunction_params ("dbclear", args, symbol_name, lines, dummy); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
312 |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
313 if (nargin == 1 && symbol_name == "all") |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
314 { |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
315 bptab.remove_all_breakpoints (); |
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
316 bptab.dbclear_all_signals (); |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
317 } |
18379
80d39575fd44
Add new input keyword "all" for dbclear to remove all breakpoints.
Rik <rik@octave.org>
parents:
18377
diff
changeset
|
318 else |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
319 { |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
320 if (symbol_name != "") |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
321 bptab.remove_breakpoint (symbol_name, lines); |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
322 } |
3805 | 323 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
324 return ovl (); |
3805 | 325 } |
326 | |
23721
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23675
diff
changeset
|
327 DEFMETHOD (dbstatus, interp, args, nargout, |
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23675
diff
changeset
|
328 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
329 @deftypefn {} {} dbstatus |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
330 @deftypefnx {} {} dbstatus @var{func} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
331 @deftypefnx {} {@var{bp_list} =} dbstatus @dots{} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
332 Report the location of active breakpoints. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
333 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
334 When called with no input or output arguments, print the list of all |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
335 functions with breakpoints and the line numbers where those breakpoints are |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
336 set. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
337 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
338 If a function name @var{func} is specified then only report breakpoints |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
339 for the named function and its subfunctions. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
340 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
341 The optional return argument @var{bp_list} is a struct array with the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
342 following fields. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
343 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
344 @table @asis |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
345 @item name |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
346 The name of the function with a breakpoint. A subfunction, say @code{func2} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
347 within an m-file, say @file{file.m}, is specified as @code{file>func2}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
348 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
349 @item file |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
350 The name of the m-file where the function code is located. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
351 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
352 @item line |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
353 The line number with the breakpoint. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
354 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
355 @item cond |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
356 The condition that must be satisfied for the breakpoint to be active, or |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
357 the empty string for unconditional breakpoints. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
358 @end table |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
359 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
360 @c Note: When @code{dbstatus} is called from the debug prompt within a function, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
361 @c the list of breakpoints is automatically trimmed to the breakpoints in the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
362 @c current function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
363 If @code{dbstop if error} is true but no explicit IDs are specified, the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
364 return value will have an empty field called @qcode{"errs"}. If IDs are |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
365 specified, the @code{errs} field will have one row per ID@. If |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
366 @code{dbstop if error} is false, there is no @qcode{"errs"} field. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
367 The @qcode{"warn"} field is set similarly by @code{dbstop if warning}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
368 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
369 @seealso{dbstop, dbclear, dbwhere, dblist, dbstack} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
370 @end deftypefn */) |
3805 | 371 { |
372 int nargin = args.length (); | |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
373 |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
374 if (nargin != 0 && nargin != 1) |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
375 error ("dbstatus: only zero or one arguments accepted\n"); |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
376 |
7082 | 377 octave_value_list fcn_list; |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
378 octave::bp_table::fname_bp_map bp_list; |
7083 | 379 std::string symbol_name; |
3805 | 380 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
381 octave::tree_evaluator& tw = interp.get_evaluator (); |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
382 |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
383 octave::bp_table& bptab = tw.get_bp_table (); |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
384 |
3805 | 385 if (nargin == 1) |
386 { | |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
387 if (! args(0).is_string ()) |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21094
diff
changeset
|
388 err_wrong_type_arg ("dbstatus", args(0)); |
21118
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
389 |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
390 symbol_name = args(0).string_value (); |
3ac9f47fb04b
Invert pattern if/code/else/err_XXX to if !/err_XXX/code.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
391 fcn_list(0) = symbol_name; |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
392 bp_list = bptab.get_breakpoint_list (fcn_list); |
7082 | 393 } |
394 else | |
395 { | |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
396 /* |
18376
bb162f81881d
Correctly return all breakpoints when called with no arguments (bug #41338).
Rik <rik@octave.org>
parents:
18375
diff
changeset
|
397 if (Vdebugging) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17753
diff
changeset
|
398 { |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
399 octave_user_code *dbg_fcn = tw.get_user_code (); |
18376
bb162f81881d
Correctly return all breakpoints when called with no arguments (bug #41338).
Rik <rik@octave.org>
parents:
18375
diff
changeset
|
400 if (dbg_fcn) |
bb162f81881d
Correctly return all breakpoints when called with no arguments (bug #41338).
Rik <rik@octave.org>
parents:
18375
diff
changeset
|
401 { |
bb162f81881d
Correctly return all breakpoints when called with no arguments (bug #41338).
Rik <rik@octave.org>
parents:
18375
diff
changeset
|
402 symbol_name = dbg_fcn->name (); |
bb162f81881d
Correctly return all breakpoints when called with no arguments (bug #41338).
Rik <rik@octave.org>
parents:
18375
diff
changeset
|
403 fcn_list(0) = symbol_name; |
bb162f81881d
Correctly return all breakpoints when called with no arguments (bug #41338).
Rik <rik@octave.org>
parents:
18375
diff
changeset
|
404 } |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17753
diff
changeset
|
405 } |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
406 */ |
7083 | 407 |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
408 bp_list = bptab.get_breakpoint_list (fcn_list); |
3805 | 409 } |
410 | |
7083 | 411 if (nargout == 0) |
3805 | 412 { |
7083 | 413 // Print out the breakpoint information. |
414 | |
21875
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
415 for (auto& fnm_bp_p: bp_list) |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
416 { |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
417 std::list<octave::bp_type> m = fnm_bp_p.second; |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
418 |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
419 // print unconditional breakpoints, if any, on a single line |
7083 | 420 |
21259 | 421 // first, check to see if there are any |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
422 int have_unconditional = 0; |
21875
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
423 for (const auto& bp : m) |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
424 { |
21875
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
425 if (bp.cond == "") |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
426 { |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
427 if (have_unconditional++) |
21259 | 428 break; // stop once we know its plural |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
429 } |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
430 } |
21259 | 431 // If we actually have some, print line numbers only |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
432 if (have_unconditional) |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
433 { |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
434 const char *_s_ = (have_unconditional > 1) ? "s" : ""; |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23728
diff
changeset
|
435 octave_stdout << "breakpoint" << _s_ << " in " << fnm_bp_p.first |
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23728
diff
changeset
|
436 << " at line" << _s_ << ' '; |
7083 | 437 |
21877
dc0347131364
maint: More code cleanup for debug.cc and C++11.
Rik <rik@octave.org>
parents:
21875
diff
changeset
|
438 for (const auto& bp : m) |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
439 { |
21877
dc0347131364
maint: More code cleanup for debug.cc and C++11.
Rik <rik@octave.org>
parents:
21875
diff
changeset
|
440 if (bp.cond == "") |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23728
diff
changeset
|
441 octave_stdout << bp.line << ' '; |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
442 } |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
443 octave_stdout << std::endl; |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
444 } |
14228
0beb62668d69
Use correct plural for dbstatus if there is more than 1 breakpoint set in file.
Rik <octave@nomad.inbox5.com>
parents:
14227
diff
changeset
|
445 |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
446 // print conditional breakpoints, one per line, with conditions |
21875
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
447 for (const auto& bp : m) |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
448 { |
21875
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
449 if (bp.cond != "") |
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
450 octave_stdout << "breakpoint in " << fnm_bp_p.first |
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
451 << " at line " << bp.line |
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
452 << " if " << bp.cond << "\n"; |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
453 } |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
454 } |
7083 | 455 |
24738
3695c2cd69b8
don't use singleton pattern for bp_table
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
456 bptab.stop_on_err_warn_status (true); |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
457 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
458 return ovl (); |
7083 | 459 } |
460 else | |
461 { | |
23721
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23675
diff
changeset
|
462 octave::help_system& help_sys = interp.get_help_system (); |
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23675
diff
changeset
|
463 |
7083 | 464 // Fill in an array for return. |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
465 int i = 0; |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
466 octave_map retmap; |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
467 octave_value retval; |
7083 | 468 |
21875
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
469 // count the number of breakpoints in all files |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
470 int count = 0; |
21875
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
471 for (const auto& fnm_bp_p : bp_list) |
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
472 count += fnm_bp_p.second.size (); |
7083 | 473 |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
474 Cell names (dim_vector (count, 1)); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
475 Cell file (dim_vector (count, 1)); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
476 Cell line (dim_vector (count, 1)); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
477 Cell cond (dim_vector (count, 1)); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
478 |
21875
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
479 for (const auto& fnm_bp_p : bp_list) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
480 { |
21875
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
481 std::string filename = fnm_bp_p.first; |
24279
a26a8714db26
delete filemarker function and corresponding internal variable
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
482 const char *sub_fun = strchr (filename.c_str (), '>'); |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
483 if (sub_fun) |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
484 filename = filename.substr(0, sub_fun - filename.c_str ()); |
21259 | 485 octave_value path_name; |
23721
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23675
diff
changeset
|
486 path_name |
b2d55b52ee51
new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents:
23675
diff
changeset
|
487 = octave::sys::canonicalize_file_name (help_sys.which (filename)); |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
488 |
21875
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
489 for (const auto& bp : fnm_bp_p.second) |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
490 { |
21875
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
491 names(i) = fnm_bp_p.first; |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
492 file(i) = path_name; |
21875
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
493 line(i) = octave_value (bp.line); |
6c09e42b7ac4
debug.[cc|h]: Use C++ for-range syntax.
Rik <rik@octave.org>
parents:
21758
diff
changeset
|
494 cond(i) = octave_value (bp.cond); |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
495 i++; |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
496 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
497 } |
7083 | 498 |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
499 retmap.assign ("name", names); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
500 retmap.assign ("file", file); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
501 retmap.assign ("line", line); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
502 retmap.assign ("cond", cond); |
7083 | 503 |
25342
416856765a55
be more careful with using auto in place of explicit const iterator decls
John W. Eaton <jwe@octave.org>
parents:
25337
diff
changeset
|
504 const octave_map ew = bptab.stop_on_err_warn_status (false); |
23577
80c42f4cca13
maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents:
23576
diff
changeset
|
505 if (ew.isempty ()) |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
506 { |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
507 retval = octave_value (retmap); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
508 } |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
509 else |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
510 { |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
511 octave_map outer (dim_vector (3,1)); |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
512 outer.assign ("bkpt", Cell (retmap)); |
25337
3ff9192b676e
use auto keyword to declare iterator variables where possible
John W. Eaton <jwe@octave.org>
parents:
25185
diff
changeset
|
513 for (auto f = ew.begin (); f != ew.end (); f++) |
21259 | 514 outer.setfield (f->first, ew.contents (f)); |
515 | |
516 retval = octave_value (outer); | |
21157
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
517 } |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
518 |
94fc5f13d51b
dbstop: conditional breakpoint, dbstop if caught error etc. (bug #46795)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21127
diff
changeset
|
519 return retval; |
3805 | 520 } |
521 } | |
522 | |
21258
b248c28d9a7b
Make dbstatus return correct filename and function name (bug #41540).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21200
diff
changeset
|
523 /* |
b248c28d9a7b
Make dbstatus return correct filename and function name (bug #41540).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21200
diff
changeset
|
524 %!test |
21645
9810e483b42f
Fix dbstop BIST tests on Windows platforms.
Rik <rik@octave.org>
parents:
21628
diff
changeset
|
525 %! dbclear all; # Clear out breakpoints before test |
21258
b248c28d9a7b
Make dbstatus return correct filename and function name (bug #41540).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21200
diff
changeset
|
526 %! dbstop @ftp/dir; |
b248c28d9a7b
Make dbstatus return correct filename and function name (bug #41540).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21200
diff
changeset
|
527 %! dbstop @audioplayer/set 70; |
b248c28d9a7b
Make dbstatus return correct filename and function name (bug #41540).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21200
diff
changeset
|
528 %! dbstop quantile>__quantile__; |
b248c28d9a7b
Make dbstatus return correct filename and function name (bug #41540).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21200
diff
changeset
|
529 %! dbstop ls; |
21259 | 530 %! s = dbstatus; |
21703
4bf980861fd6
Allow breakpoints in nested functions, and in mixed subfunctions (bug #47917).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21662
diff
changeset
|
531 %! dbclear all; |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21568
diff
changeset
|
532 %! assert (s(1).name, "@audioplayer/set>setproperty"); |
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21568
diff
changeset
|
533 %! assert (s(2).name, "@ftp/dir"); |
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21568
diff
changeset
|
534 %! assert (s(3).name, "ls"); |
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21568
diff
changeset
|
535 %! assert (s(4).name, "quantile>__quantile__"); |
21645
9810e483b42f
Fix dbstop BIST tests on Windows platforms.
Rik <rik@octave.org>
parents:
21628
diff
changeset
|
536 %! assert (s(2).file(end-10:end), [filesep "@ftp" filesep "dir.m"]); |
21258
b248c28d9a7b
Make dbstatus return correct filename and function name (bug #41540).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21200
diff
changeset
|
537 */ |
b248c28d9a7b
Make dbstatus return correct filename and function name (bug #41540).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21200
diff
changeset
|
538 |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
539 DEFMETHOD (dbwhere, interp, , , |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
540 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
541 @deftypefn {} {} dbwhere |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
542 In debugging mode, report the current file and line number where execution |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
543 is stopped. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
544 @seealso{dbstack, dblist, dbstatus, dbcont, dbstep, dbup, dbdown} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
545 @end deftypefn */) |
3805 | 546 { |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
547 octave::tree_evaluator& tw = interp.get_evaluator (); |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
548 |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
549 octave_user_code *dbg_fcn = tw.get_user_code (); |
3805 | 550 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
551 if (! dbg_fcn) |
21322
909129eb77c5
use correct stack frame when reporting debug location
John W. Eaton <jwe@octave.org>
parents:
21318
diff
changeset
|
552 { |
909129eb77c5
use correct stack frame when reporting debug location
John W. Eaton <jwe@octave.org>
parents:
21318
diff
changeset
|
553 octave_stdout << "stopped at top level" << std::endl; |
909129eb77c5
use correct stack frame when reporting debug location
John W. Eaton <jwe@octave.org>
parents:
21318
diff
changeset
|
554 return ovl (); |
909129eb77c5
use correct stack frame when reporting debug location
John W. Eaton <jwe@octave.org>
parents:
21318
diff
changeset
|
555 } |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
556 |
21322
909129eb77c5
use correct stack frame when reporting debug location
John W. Eaton <jwe@octave.org>
parents:
21318
diff
changeset
|
557 octave_stdout << "stopped in " << dbg_fcn->name () << " at "; |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
558 |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
559 octave::call_stack& cs = interp.get_call_stack (); |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
560 |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
561 int l = cs.debug_user_code_line (); |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
562 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
563 if (l > 0) |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
564 { |
21322
909129eb77c5
use correct stack frame when reporting debug location
John W. Eaton <jwe@octave.org>
parents:
21318
diff
changeset
|
565 octave_stdout << "line " << l; |
909129eb77c5
use correct stack frame when reporting debug location
John W. Eaton <jwe@octave.org>
parents:
21318
diff
changeset
|
566 |
909129eb77c5
use correct stack frame when reporting debug location
John W. Eaton <jwe@octave.org>
parents:
21318
diff
changeset
|
567 std::string file_name = dbg_fcn->fcn_file_name (); |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
568 |
21322
909129eb77c5
use correct stack frame when reporting debug location
John W. Eaton <jwe@octave.org>
parents:
21318
diff
changeset
|
569 if (! file_name.empty ()) |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
570 { |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23728
diff
changeset
|
571 octave_stdout << " [" << file_name << ']' << std::endl; |
21322
909129eb77c5
use correct stack frame when reporting debug location
John W. Eaton <jwe@octave.org>
parents:
21318
diff
changeset
|
572 |
23728
b40b7243a782
new class for caching file contents for debug and echo
John W. Eaton <jwe@octave.org>
parents:
23721
diff
changeset
|
573 std::string line = dbg_fcn->get_code_line (l); |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
574 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
575 if (! line.empty ()) |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
576 octave_stdout << l << ": " << line << std::endl; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
577 } |
21322
909129eb77c5
use correct stack frame when reporting debug location
John W. Eaton <jwe@octave.org>
parents:
21318
diff
changeset
|
578 else |
909129eb77c5
use correct stack frame when reporting debug location
John W. Eaton <jwe@octave.org>
parents:
21318
diff
changeset
|
579 octave_stdout << std::endl; |
3805 | 580 } |
581 else | |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
582 octave_stdout << "<unknown line>" << std::endl; |
3895 | 583 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
584 return ovl (); |
3895 | 585 } |
586 | |
23143
898c33f4b9c0
declare some functions that are only used once "static"
John W. Eaton <jwe@octave.org>
parents:
23137
diff
changeset
|
587 static void |
3949 | 588 do_dbtype (std::ostream& os, const std::string& name, int start, int end) |
3895 | 589 { |
590 std::string ff = fcn_file_in_path (name); | |
591 | |
21077
40f931a63a91
Undo incorrect if/else inversion in cset 3aa293be0e8d.
Rik <rik@octave.org>
parents:
21017
diff
changeset
|
592 if (ff.empty ()) |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
593 os << "dbtype: unknown function " << name << "\n"; |
21077
40f931a63a91
Undo incorrect if/else inversion in cset 3aa293be0e8d.
Rik <rik@octave.org>
parents:
21017
diff
changeset
|
594 else |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
595 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
596 std::ifstream fs (ff.c_str (), std::ios::in); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
597 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
598 if (! fs) |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
599 os << "dbtype: unable to open '" << ff << "' for reading!\n"; |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
600 else |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
601 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
602 int line = 1; |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
603 std::string text; |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
604 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
605 while (std::getline (fs, text) && line <= end) |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
606 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
607 if (line >= start) |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
608 os << line << "\t" << text << "\n"; |
21077
40f931a63a91
Undo incorrect if/else inversion in cset 3aa293be0e8d.
Rik <rik@octave.org>
parents:
21017
diff
changeset
|
609 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
610 line++; |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
611 } |
21077
40f931a63a91
Undo incorrect if/else inversion in cset 3aa293be0e8d.
Rik <rik@octave.org>
parents:
21017
diff
changeset
|
612 } |
3895 | 613 } |
614 | |
6646 | 615 os.flush (); |
3895 | 616 } |
617 | |
25347
af3319d86a5f
eliminate some global references to interpreter internals
John W. Eaton <jwe@octave.org>
parents:
25346
diff
changeset
|
618 DEFMETHOD (dbtype, interp, args, , |
af3319d86a5f
eliminate some global references to interpreter internals
John W. Eaton <jwe@octave.org>
parents:
25346
diff
changeset
|
619 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
620 @deftypefn {} {} dbtype |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
621 @deftypefnx {} {} dbtype @var{lineno} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
622 @deftypefnx {} {} dbtype @var{startl:endl} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
623 @deftypefnx {} {} dbtype @var{startl:end} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
624 @deftypefnx {} {} dbtype @var{func} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
625 @deftypefnx {} {} dbtype @var{func} @var{lineno} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
626 @deftypefnx {} {} dbtype @var{func} @var{startl:endl} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
627 @deftypefnx {} {} dbtype @var{func} @var{startl:end} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
628 Display a script file with line numbers. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
629 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
630 When called with no arguments in debugging mode, display the script file |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
631 currently being debugged. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
632 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
633 An optional range specification can be used to list only a portion of the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
634 file. The special keyword @qcode{"end"} is a valid line number |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
635 specification for the last line of the file. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
636 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
637 When called with the name of a function, list that script file with line |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
638 numbers. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
639 @seealso{dblist, dbwhere, dbstatus, dbstop} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
640 @end deftypefn */) |
3895 | 641 { |
7719
87eda1f8faaa
octave_user_code: new base class for octave_user_script and octave_user_function
John W. Eaton <jwe@octave.org>
parents:
7539
diff
changeset
|
642 octave_user_code *dbg_fcn; |
3946 | 643 |
3895 | 644 string_vector argv = args.make_argv ("dbtype"); |
3946 | 645 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
646 octave::tree_evaluator& tw = interp.get_evaluator (); |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
647 |
20819
f428cbe7576f
eliminate unnecessary uses of nargin
John W. Eaton <jwe@octave.org>
parents:
20817
diff
changeset
|
648 switch (args.length ()) |
3895 | 649 { |
21259 | 650 case 0: // dbtype |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
651 dbg_fcn = tw.get_user_code (); |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
652 |
20980
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
653 if (! dbg_fcn) |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
654 error ("dbtype: must be inside a user function to give no arguments to dbtype\n"); |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
655 |
20980
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
656 do_dbtype (octave_stdout, dbg_fcn->fcn_file_name (), |
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
657 0, std::numeric_limits<int>::max ()); |
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
658 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
659 break; |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
660 |
21259 | 661 case 1: // (dbtype start:end) || (dbtype func) || (dbtype lineno) |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
662 { |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
663 std::string arg = argv[1]; |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
664 |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
665 size_t ind = arg.find (':'); |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
666 |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
667 if (ind != std::string::npos) // (dbtype start:end) |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
668 { |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
669 dbg_fcn = tw.get_user_code (); |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
670 |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
671 if (dbg_fcn) |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
672 { |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
673 std::string start_str = arg.substr (0, ind); |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
674 std::string end_str = arg.substr (ind + 1); |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
675 |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
676 int start, end; |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
677 start = atoi (start_str.c_str ()); |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
678 if (end_str == "end") |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
679 end = std::numeric_limits<int>::max (); |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
680 else |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
681 end = atoi (end_str.c_str ()); |
3895 | 682 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
683 if (std::min (start, end) <= 0) |
20831
35241c4b696c
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20819
diff
changeset
|
684 error ("dbtype: start and end lines must be >= 1\n"); |
18393
6a2cc29f55fc
Correctly handle 'dbtype lineno' case.
Rik <rik@octave.org>
parents:
18392
diff
changeset
|
685 |
20980
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
686 if (start > end) |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
687 error ("dbtype: start line must be less than end line\n"); |
20980
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
688 |
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
689 do_dbtype (octave_stdout, dbg_fcn->fcn_file_name (), |
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
690 start, end); |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
691 } |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
692 } |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
693 else // (dbtype func) || (dbtype lineno) |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
694 { |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
695 int line = atoi (arg.c_str ()); |
3895 | 696 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
697 if (line == 0) // (dbtype func) |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
698 { |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
699 dbg_fcn = tw.get_user_code (arg); |
14227
c24833c6ebc2
Add error messages to dbtype(). Allow use of "end" keyword in linespec.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
700 |
20980
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
701 if (! dbg_fcn) |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
702 error ("dbtype: function <%s> not found\n", arg.c_str ()); |
20980
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
703 |
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
704 do_dbtype (octave_stdout, dbg_fcn->fcn_file_name (), |
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
705 0, std::numeric_limits<int>::max ()); |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
706 } |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
707 else // (dbtype lineno) |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
708 { |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
709 if (line <= 0) |
20831
35241c4b696c
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20819
diff
changeset
|
710 error ("dbtype: start and end lines must be >= 1\n"); |
3895 | 711 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
712 dbg_fcn = tw.get_user_code (); |
3895 | 713 |
14227
c24833c6ebc2
Add error messages to dbtype(). Allow use of "end" keyword in linespec.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
714 if (dbg_fcn) |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
715 do_dbtype (octave_stdout, dbg_fcn->fcn_file_name (), |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
716 line, line); |
14227
c24833c6ebc2
Add error messages to dbtype(). Allow use of "end" keyword in linespec.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
717 } |
c24833c6ebc2
Add error messages to dbtype(). Allow use of "end" keyword in linespec.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
718 } |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
719 } |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
720 break; |
3895 | 721 |
21259 | 722 case 2: // (dbtype func start:end) || (dbtype func start) |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
723 { |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
724 dbg_fcn = tw.get_user_code (argv[1]); |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
725 |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
726 if (! dbg_fcn) |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
727 error ("dbtype: function <%s> not found\n", argv[1].c_str ()); |
3895 | 728 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
729 std::string arg = argv[2]; |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
730 int start, end; |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
731 size_t ind = arg.find (':'); |
6317 | 732 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
733 if (ind != std::string::npos) |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
734 { |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
735 std::string start_str = arg.substr (0, ind); |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
736 std::string end_str = arg.substr (ind + 1); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
737 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
738 start = atoi (start_str.c_str ()); |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
739 if (end_str == "end") |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
740 end = std::numeric_limits<int>::max (); |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
741 else |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
742 end = atoi (end_str.c_str ()); |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
743 } |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
744 else |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
745 { |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
746 start = atoi (arg.c_str ()); |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
747 end = start; |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
748 } |
14227
c24833c6ebc2
Add error messages to dbtype(). Allow use of "end" keyword in linespec.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
749 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
750 if (std::min (start, end) <= 0) |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
751 error ("dbtype: start and end lines must be >= 1\n"); |
20980
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
752 |
81c2b14c209f
maint: invert if/else/error instances.
John W. Eaton <jwe@octave.org>
parents:
20962
diff
changeset
|
753 if (start > end) |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
754 error ("dbtype: start line must be less than end line\n"); |
3895 | 755 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
756 do_dbtype (octave_stdout, dbg_fcn->fcn_file_name (), start, end); |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
757 } |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
758 break; |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
759 |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
760 default: |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
761 error ("dbtype: expecting zero, one, or two arguments\n"); |
3895 | 762 } |
3805 | 763 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
764 return ovl (); |
3805 | 765 } |
766 | |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
767 DEFMETHOD (dblist, interp, args, , |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
768 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
769 @deftypefn {} {} dblist |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
770 @deftypefnx {} {} dblist @var{n} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
771 In debugging mode, list @var{n} lines of the function being debugged |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
772 centered around the current line to be executed. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
773 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
774 If unspecified @var{n} defaults to 10 (+/- 5 lines) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
775 @seealso{dbwhere, dbtype, dbstack} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
776 @end deftypefn */) |
16842
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
777 { |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
778 int n = 10; |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
779 |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
780 if (args.length () == 1) |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
781 { |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
782 octave_value arg = args(0); |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
783 |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
784 if (arg.is_string ()) |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
785 { |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
786 std::string s_arg = arg.string_value (); |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
787 |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
788 n = atoi (s_arg.c_str ()); |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
789 } |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
790 else |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
791 n = args(0).int_value (); |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
792 |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
793 if (n < 0) |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
794 error ("dblist: N must be a non-negative integer"); |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
795 } |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
796 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
797 octave::tree_evaluator& tw = interp.get_evaluator (); |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
798 |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
799 octave_user_code *dbg_fcn = tw.get_user_code (); |
16842
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
800 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
801 if (! dbg_fcn) |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
802 error ("dblist: must be inside a user function to use dblist\n"); |
16842
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
803 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
804 bool have_file = true; |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
805 |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
806 std::string name = dbg_fcn->fcn_file_name (); |
16842
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
807 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
808 if (name.empty ()) |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
809 { |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
810 have_file = false; |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
811 name = dbg_fcn->name (); |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
812 } |
16842
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
813 |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
814 octave::call_stack& cs = interp.get_call_stack (); |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
815 |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
816 int l = cs.debug_user_code_line (); |
16842
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
817 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
818 if (l > 0) |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
819 { |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
820 if (have_file) |
16842
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
821 { |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
822 int l_min = std::max (l - n/2, 0); |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
823 int l_max = l + n/2; |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
824 do_dbtype (octave_stdout, name, l_min, l-1); |
16842
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
825 |
23728
b40b7243a782
new class for caching file contents for debug and echo
John W. Eaton <jwe@octave.org>
parents:
23721
diff
changeset
|
826 std::string line = dbg_fcn->get_code_line (l); |
b40b7243a782
new class for caching file contents for debug and echo
John W. Eaton <jwe@octave.org>
parents:
23721
diff
changeset
|
827 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
828 if (! line.empty ()) |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
829 octave_stdout << l << "-->\t" << line << std::endl; |
16842
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
830 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
831 do_dbtype (octave_stdout, name, l+1, l_max); |
16842
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
832 } |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
833 } |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
834 else |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
835 { |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
836 octave_stdout << "dblist: unable to determine source code line" |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
837 << std::endl; |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
838 } |
16842
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
839 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
840 return ovl (); |
16842
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
841 } |
035b5fe157ad
Add new dblist command to debugger (bug #38953)
Rik <rik@octave.org>
parents:
16771
diff
changeset
|
842 |
13689
b68d95054947
print show_octave_dbstack output to std::cerr
John W. Eaton <jwe@octave.org>
parents:
13326
diff
changeset
|
843 static octave_value_list |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
844 do_dbstack (octave::interpreter& interp, const octave_value_list& args, |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
845 int nargout, std::ostream& os) |
7736 | 846 { |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
847 int nargin = args.length (); |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
848 |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
849 if (nargin > 2) |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
850 print_usage (); |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
851 |
7736 | 852 octave_value_list retval; |
853 | |
21743
f4d7d0eb5b0c
use namespace for unwind_protect class
John W. Eaton <jwe@octave.org>
parents:
21736
diff
changeset
|
854 octave::unwind_protect frame; |
7890 | 855 |
7901 | 856 octave_idx_type curr_frame = -1; |
7890 | 857 |
7901 | 858 size_t nskip = 0; |
7736 | 859 |
20817
3d551b2ae928
Use variable name nargin consistently in C++ code.
Rik <rik@octave.org>
parents:
20804
diff
changeset
|
860 if (nargin == 1 || nargin == 2) |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
861 { |
7890 | 862 int n = 0; |
863 | |
20817
3d551b2ae928
Use variable name nargin consistently in C++ code.
Rik <rik@octave.org>
parents:
20804
diff
changeset
|
864 for (octave_idx_type i = 0; i < nargin; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
865 { |
17649
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
866 octave_value arg = args(i); |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
867 |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
868 if (arg.is_string ()) |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
869 { |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
870 std::string s_arg = arg.string_value (); |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
871 |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
872 // Skip "-completenames", octave returns full names anyway. |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
873 if (s_arg == "-completenames") |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
874 continue; |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
875 |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
876 n = atoi (s_arg.c_str ()); |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
877 } |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
878 else |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
879 n = arg.int_value (); |
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
880 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
881 if (n <= 0) |
17649
a09511ebf7ef
Make dbstack to accept -completenames.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17281
diff
changeset
|
882 error ("dbstack: N must be a non-negative integer"); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
883 } |
7890 | 884 |
885 if (n > 0) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
886 nskip = n; |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
887 } |
7736 | 888 |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
889 octave::call_stack& cs = interp.get_call_stack (); |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
890 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
891 if (nargout == 0) |
7736 | 892 { |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
893 octave_map stk = cs.backtrace (nskip, curr_frame); |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
894 octave_idx_type nframes_to_display = stk.numel (); |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
895 |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
896 if (nframes_to_display > 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
897 { |
23675
f71c0195b19d
move octave_preserve_stream_state to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23584
diff
changeset
|
898 octave::preserve_stream_state stream_state (os); |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
899 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
900 os << "stopped in:\n\n"; |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
901 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
902 Cell names = stk.contents ("name"); |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
903 Cell files = stk.contents ("file"); |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
904 Cell lines = stk.contents ("line"); |
10839 | 905 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
906 bool show_top_level = true; |
10839 | 907 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
908 size_t max_name_len = 0; |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
909 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
910 for (octave_idx_type i = 0; i < nframes_to_display; i++) |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
911 { |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
912 std::string name = names(i).string_value (); |
10839 | 913 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
914 max_name_len = std::max (name.length (), max_name_len); |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
915 } |
7890 | 916 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
917 for (octave_idx_type i = 0; i < nframes_to_display; i++) |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
918 { |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
919 std::string name = names(i).string_value (); |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
920 std::string file = files(i).string_value (); |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
921 int line = lines(i).int_value (); |
10839 | 922 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
923 if (show_top_level && i == curr_frame) |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
924 show_top_level = false; |
10839 | 925 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
926 os << (i == curr_frame ? " --> " : " ") |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
927 << std::setw (max_name_len) << name |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
928 << " at line " << line |
23807
336f89b6208b
Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents:
23728
diff
changeset
|
929 << " [" << file << ']' |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
930 << std::endl; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
931 } |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
932 |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
933 if (show_top_level) |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
934 os << " --> top level" << std::endl; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
935 } |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
936 } |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
937 else |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
938 { |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
939 octave_map stk = cs.backtrace (nskip, curr_frame, false); |
18440
96a495813047
Don't put parent function in subfunction stack structure name (bug #41506).
Rik <rik@octave.org>
parents:
18398
diff
changeset
|
940 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
941 retval = ovl (stk, curr_frame < 0 ? 1 : curr_frame + 1); |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
942 } |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
943 |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
944 return retval; |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
945 } |
7736 | 946 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
947 // A function that can be easily called from a debugger print the Octave stack. |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
948 // This can be useful for finding what line of code the interpreter is |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
949 // currently executing when the debugger is stopped in some C++ function, |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
950 // for example. |
13326
23cc9c13b622
show_octave_dbstack: new convenience function for debugging
John W. Eaton <jwe@octave.org>
parents:
12642
diff
changeset
|
951 |
13784
0bbe319bf26b
octave_class::size: return matrix with correct dimensions
John W. Eaton <jwe@octave.org>
parents:
13689
diff
changeset
|
952 void |
13326
23cc9c13b622
show_octave_dbstack: new convenience function for debugging
John W. Eaton <jwe@octave.org>
parents:
12642
diff
changeset
|
953 show_octave_dbstack (void) |
23cc9c13b622
show_octave_dbstack: new convenience function for debugging
John W. Eaton <jwe@octave.org>
parents:
12642
diff
changeset
|
954 { |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
955 do_dbstack (octave::__get_interpreter__ ("show_octave_dbstack"), |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
956 octave_value_list (), 0, std::cerr); |
13689
b68d95054947
print show_octave_dbstack output to std::cerr
John W. Eaton <jwe@octave.org>
parents:
13326
diff
changeset
|
957 } |
b68d95054947
print show_octave_dbstack output to std::cerr
John W. Eaton <jwe@octave.org>
parents:
13326
diff
changeset
|
958 |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
959 DEFMETHOD (dbstack, interp, args, nargout, |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
960 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
961 @deftypefn {} {} dbstack |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
962 @deftypefnx {} {} dbstack @var{n} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
963 @deftypefnx {} {} dbstack @var{-completenames} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
964 @deftypefnx {} {[@var{stack}, @var{idx}] =} dbstack (@dots{}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
965 Display or return current debugging function stack information. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
966 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
967 With optional argument @var{n}, omit the @var{n} innermost stack frames. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
968 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
969 Although accepted, the argument @var{-completenames} is silently ignored. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
970 Octave always returns absolute filenames. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
971 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
972 The arguments @var{n} and @var{-completenames} can be both specified in any |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
973 order. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
974 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
975 The optional return argument @var{stack} is a struct array with the |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
976 following fields: |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
977 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
978 @table @asis |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
979 @item file |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
980 The name of the m-file where the function code is located. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
981 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
982 @item name |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
983 The name of the function with a breakpoint. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
984 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
985 @item line |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
986 The line number of an active breakpoint. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
987 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
988 @item column |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
989 The column number of the line where the breakpoint begins. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
990 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
991 @item scope |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
992 Undocumented. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
993 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
994 @item context |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
995 Undocumented. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
996 @end table |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
997 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
998 The return argument @var{idx} specifies which element of the @var{stack} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
999 struct array is currently active. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1000 @seealso{dbup, dbdown, dbwhere, dblist, dbstatus} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1001 @end deftypefn */) |
13689
b68d95054947
print show_octave_dbstack output to std::cerr
John W. Eaton <jwe@octave.org>
parents:
13326
diff
changeset
|
1002 { |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
1003 return do_dbstack (interp, args, nargout, octave_stdout); |
13326
23cc9c13b622
show_octave_dbstack: new convenience function for debugging
John W. Eaton <jwe@octave.org>
parents:
12642
diff
changeset
|
1004 } |
23cc9c13b622
show_octave_dbstack: new convenience function for debugging
John W. Eaton <jwe@octave.org>
parents:
12642
diff
changeset
|
1005 |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1006 static void |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
1007 do_dbupdown (octave::interpreter& interp, const octave_value_list& args, |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
1008 const std::string& who) |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1009 { |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1010 int n = 1; |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1011 |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1012 if (args.length () == 1) |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1013 { |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1014 octave_value arg = args(0); |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1015 |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1016 if (arg.is_string ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
1017 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
1018 std::string s_arg = arg.string_value (); |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1019 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
1020 n = atoi (s_arg.c_str ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
1021 } |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1022 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
1023 n = args(0).int_value (); |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1024 } |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1025 |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
1026 if (who == "dbup") |
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
1027 n = -n; |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1028 |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
1029 octave::call_stack& cs = interp.get_call_stack (); |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
1030 |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
1031 if (! cs.goto_frame_relative (n, true)) |
20557
b10432a40432
eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20428
diff
changeset
|
1032 error ("%s: invalid stack frame", who.c_str ()); |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1033 } |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1034 |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
1035 DEFMETHOD (dbup, interp, args, , |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
1036 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1037 @deftypefn {} {} dbup |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1038 @deftypefnx {} {} dbup @var{n} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1039 In debugging mode, move up the execution stack @var{n} frames. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1040 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1041 If @var{n} is omitted, move up one frame. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1042 @seealso{dbstack, dbdown} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1043 @end deftypefn */) |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1044 { |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
1045 do_dbupdown (interp, args, "dbup"); |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1046 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
1047 return ovl (); |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1048 } |
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1049 |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
1050 DEFMETHOD (dbdown, interp, args, , |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
1051 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1052 @deftypefn {} {} dbdown |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1053 @deftypefnx {} {} dbdown @var{n} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1054 In debugging mode, move down the execution stack @var{n} frames. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1055 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1056 If @var{n} is omitted, move down one frame. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1057 @seealso{dbstack, dbup} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1058 @end deftypefn */) |
7752
40c428ea3408
initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents:
7736
diff
changeset
|
1059 { |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
1060 do_dbupdown (interp, args, "dbdown"); |
7736 | 1061 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
1062 return ovl (); |
7736 | 1063 } |
1064 | |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1065 DEFMETHOD (dbstep, interp, args, , |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1066 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1067 @deftypefn {} {} dbstep |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1068 @deftypefnx {} {} dbstep @var{n} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1069 @deftypefnx {} {} dbstep in |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1070 @deftypefnx {} {} dbstep out |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1071 @deftypefnx {} {} dbnext @dots{} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1072 In debugging mode, execute the next @var{n} lines of code. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1073 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1074 If @var{n} is omitted, execute the next single line of code. If the next |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1075 line of code is itself defined in terms of an m-file remain in the existing |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1076 function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1077 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1078 Using @code{dbstep in} will cause execution of the next line to step into |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1079 any m-files defined on the next line. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1080 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1081 Using @code{dbstep out} will cause execution to continue until the current |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1082 function returns. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1083 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1084 @code{dbnext} is an alias for @code{dbstep}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1085 @seealso{dbcont, dbquit} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1086 @end deftypefn */) |
7787
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1087 { |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1088 if (! Vdebugging) |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1089 error ("dbstep: can only be called in debug mode"); |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1090 |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1091 int nargin = args.length (); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
1092 |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1093 if (nargin > 1) |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1094 print_usage (); |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20713
diff
changeset
|
1095 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1096 octave::tree_evaluator& tw = interp.get_evaluator (); |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1097 |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1098 if (nargin == 1) |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1099 { |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1100 std::string arg = args(0).xstring_value ("dbstep: input argument must be a string"); |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1101 |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1102 if (arg == "in") |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
1103 { |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1104 Vdebugging = false; |
22164
5d4a286061c8
Track line numbers when in debug mode (bug #45764)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
1105 Vtrack_line_num = true; |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1106 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1107 tw.set_dbstep_flag (-1); |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1108 } |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1109 else if (arg == "out") |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1110 { |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1111 Vdebugging = false; |
22164
5d4a286061c8
Track line numbers when in debug mode (bug #45764)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
1112 Vtrack_line_num = true; |
20582
ba2b07c13913
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20557
diff
changeset
|
1113 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1114 tw.set_dbstep_flag (-2); |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1115 } |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1116 else |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1117 { |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1118 int n = atoi (arg.c_str ()); |
7787
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1119 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
1120 if (n < 1) |
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
1121 error ("dbstep: invalid argument"); |
19743
67f2c76f9f4d
Remove unnecessary checking of error_state after is_string validation.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
1122 |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
1123 Vdebugging = false; |
22164
5d4a286061c8
Track line numbers when in debug mode (bug #45764)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
1124 Vtrack_line_num = true; |
20962
3aa293be0e8d
maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents:
20941
diff
changeset
|
1125 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1126 tw.set_dbstep_flag (n); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10232
diff
changeset
|
1127 } |
7787
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1128 } |
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1129 else |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1130 { |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1131 Vdebugging = false; |
22164
5d4a286061c8
Track line numbers when in debug mode (bug #45764)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
1132 Vtrack_line_num = true; |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1133 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1134 tw.set_dbstep_flag (1); |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1135 } |
7787
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1136 |
20941
a4f5da7c5463
maint: Replace "octave_value_list ()" with "ovl ()".
Rik <rik@octave.org>
parents:
20940
diff
changeset
|
1137 return ovl (); |
7787
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1138 } |
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1139 |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
1140 DEFALIAS (dbnext, dbstep); |
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
1141 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1142 DEFMETHOD (dbcont, interp, args, , |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1143 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1144 @deftypefn {} {} dbcont |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1145 Leave command-line debugging mode and continue code execution normally. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1146 @seealso{dbstep, dbquit} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1147 @end deftypefn */) |
7787
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1148 { |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1149 if (! Vdebugging) |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1150 error ("dbcont: can only be called in debug mode"); |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
1151 |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1152 if (args.length () != 0) |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1153 print_usage (); |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20713
diff
changeset
|
1154 |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1155 Vdebugging = false; |
22164
5d4a286061c8
Track line numbers when in debug mode (bug #45764)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22094
diff
changeset
|
1156 Vtrack_line_num = true; |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1157 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1158 octave::tree_evaluator& tw = interp.get_evaluator (); |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1159 |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1160 tw.reset_debug_state (); |
7787
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1161 |
20941
a4f5da7c5463
maint: Replace "octave_value_list ()" with "ovl ()".
Rik <rik@octave.org>
parents:
20940
diff
changeset
|
1162 return ovl (); |
7787
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1163 } |
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1164 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1165 DEFMETHOD (dbquit, interp, args, , |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1166 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1167 @deftypefn {} {} dbquit |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1168 Quit debugging mode immediately without further code execution and return to |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1169 the Octave prompt. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1170 @seealso{dbcont, dbstep} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1171 @end deftypefn */) |
7787
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1172 { |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1173 if (! Vdebugging) |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1174 error ("dbquit: can only be called in debug mode"); |
10186
095a1e670e68
make dbstep work with keyboard function
John W. Eaton <jwe@octave.org>
parents:
10160
diff
changeset
|
1175 |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1176 if (args.length () != 0) |
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1177 print_usage (); |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
8365
diff
changeset
|
1178 |
25185
559e4821c3f7
make dbquit work again (bug #53426)
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
1179 // FIXME: there are too many debug mode flags! |
559e4821c3f7
make dbquit work again (bug #53426)
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
1180 |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1181 Vdebugging = false; |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20713
diff
changeset
|
1182 |
25360
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1183 octave::tree_evaluator& tw = interp.get_evaluator (); |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1184 |
bc5f225bc578
eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents:
25347
diff
changeset
|
1185 tw.reset_debug_state (false); |
20918
6f0bd96f93c0
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
1186 |
25185
559e4821c3f7
make dbquit work again (bug #53426)
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
1187 throw octave::interrupt_exception (); |
7787
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1188 |
20941
a4f5da7c5463
maint: Replace "octave_value_list ()" with "ovl ()".
Rik <rik@octave.org>
parents:
20940
diff
changeset
|
1189 return ovl (); |
7787
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1190 } |
6b521b1e3631
Add dbquit and make dbstep compatible. Use parser in debug mode to handle multi-line input
David Bateman <dbateman@free.fr>
parents:
7752
diff
changeset
|
1191 |
8746
5dd06f19e9be
handle commands in the lexer
John W. Eaton <jwe@octave.org>
parents:
8677
diff
changeset
|
1192 DEFUN (isdebugmode, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1193 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1194 @deftypefn {} {} isdebugmode () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1195 Return true if in debugging mode, otherwise false. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1196 @seealso{dbwhere, dbstack, dbstatus} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1197 @end deftypefn */) |
8114
cbbea37b95e8
debug.cc (Fisdebugmode): New function.
Krzesimir Nowak <qdlacz@gmail.com>
parents:
8021
diff
changeset
|
1198 { |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20713
diff
changeset
|
1199 if (args.length () != 0) |
8114
cbbea37b95e8
debug.cc (Fisdebugmode): New function.
Krzesimir Nowak <qdlacz@gmail.com>
parents:
8021
diff
changeset
|
1200 print_usage (); |
cbbea37b95e8
debug.cc (Fisdebugmode): New function.
Krzesimir Nowak <qdlacz@gmail.com>
parents:
8021
diff
changeset
|
1201 |
21127
df7891224709
maint: Use "return ovl (...)" in DEFUN macros.
Rik <rik@octave.org>
parents:
21118
diff
changeset
|
1202 return ovl (Vdebugging); |
8114
cbbea37b95e8
debug.cc (Fisdebugmode): New function.
Krzesimir Nowak <qdlacz@gmail.com>
parents:
8021
diff
changeset
|
1203 } |
19379
c1ce43276b86
avoid printing debug location in cmd window when using GUI to step
John W. Eaton <jwe@octave.org>
parents:
18236
diff
changeset
|
1204 |
25402
ef2b9d4abf4a
eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
1205 DEFMETHOD (__db_next_breakpoint_quiet__, interp, args, , |
ef2b9d4abf4a
eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
1206 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1207 @deftypefn {} {} __db_next_breakpoint_quiet__ () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1208 @deftypefnx {} {} __db_next_breakpoint_quiet__ (@var{flag}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1209 Disable line info printing at the next breakpoint. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1210 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1211 With a logical argument @var{flag}, set the state on or off. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21885
diff
changeset
|
1212 @end deftypefn */) |
19379
c1ce43276b86
avoid printing debug location in cmd window when using GUI to step
John W. Eaton <jwe@octave.org>
parents:
18236
diff
changeset
|
1213 { |
c1ce43276b86
avoid printing debug location in cmd window when using GUI to step
John W. Eaton <jwe@octave.org>
parents:
18236
diff
changeset
|
1214 int nargin = args.length (); |
c1ce43276b86
avoid printing debug location in cmd window when using GUI to step
John W. Eaton <jwe@octave.org>
parents:
18236
diff
changeset
|
1215 |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20713
diff
changeset
|
1216 if (nargin > 1) |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20713
diff
changeset
|
1217 print_usage (); |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20713
diff
changeset
|
1218 |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20713
diff
changeset
|
1219 bool state = true; |
19379
c1ce43276b86
avoid printing debug location in cmd window when using GUI to step
John W. Eaton <jwe@octave.org>
parents:
18236
diff
changeset
|
1220 |
20804
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20713
diff
changeset
|
1221 if (nargin == 1) |
a6eaedd8bd75
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20713
diff
changeset
|
1222 state = args(0).bool_value (); |
19379
c1ce43276b86
avoid printing debug location in cmd window when using GUI to step
John W. Eaton <jwe@octave.org>
parents:
18236
diff
changeset
|
1223 |
25402
ef2b9d4abf4a
eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
1224 octave::tree_evaluator& tw = interp.get_evaluator (); |
ef2b9d4abf4a
eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
1225 |
ef2b9d4abf4a
eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents:
25360
diff
changeset
|
1226 tw.quiet_breakpoint_flag (state); |
19379
c1ce43276b86
avoid printing debug location in cmd window when using GUI to step
John W. Eaton <jwe@octave.org>
parents:
18236
diff
changeset
|
1227 |
20941
a4f5da7c5463
maint: Replace "octave_value_list ()" with "ovl ()".
Rik <rik@octave.org>
parents:
20940
diff
changeset
|
1228 return ovl (); |
19379
c1ce43276b86
avoid printing debug location in cmd window when using GUI to step
John W. Eaton <jwe@octave.org>
parents:
18236
diff
changeset
|
1229 } |