Просмотр исполнения одного файла в GNU Octave (echo fcnname on)

264
hyiltiz

Вопрос просто: в MATLAB, вы могли бы просто использовать, echo myFun onчтобы установить echoстатус одного функции м-файл в on, который затем показывает вам каждый из линий, выполненных.

Однако в GNU Octave такой синтаксис отсутствует. help echoпоказывает:

octave:1> help echo 'echo' is a built-in function from the file libinterp/corefcn/input.cc  -- Command: echo -- Command: echo on -- Command: echo off -- Command: echo on all -- Command: echo off all Control whether commands are displayed as they are executed.  Valid options are:  'on' Enable echoing of commands as they are executed in script files.  'off' Disable echoing of commands as they are executed in script files.  'on all' Enable echoing of commands as they are executed in script files and functions.  'off all' Disable echoing of commands as they are executed in script files and functions.  With no arguments, 'echo' toggles the current echo state.  Additional help for built-in functions and operators is available in the online version of the manual. Use the command 'doc <topic>' to search the manual index.  Help and information about Octave is also available on the WWW at http://www.octave.org and via the help@octave.org mailing list. 

Копая глубже, информационная страница говорит больше:

 -- Built-in Function: VAL = echo_executing_commands () -- Built-in Function: OLD_VAL = echo_executing_commands (NEW_VAL) -- Built-in Function: echo_executing_commands (NEW_VAL, "local") Query or set the internal variable that controls the echo state.  It may be the sum of the following values:  1 Echo commands read from script files.  2 Echo commands from functions.  4 Echo commands read from command line.  More than one state can be active at once. For example, a value of 3 is equivalent to the command 'echo on all'.  The value of 'echo_executing_commands' may be set by the 'echo' command or the command line option '--echo-commands'.  When called from inside a function with the "local" option, the variable is changed locally for the function and any subroutines it calls. The original variable value is restored when exiting the function. 

Таким образом, что-то вроде моей попытки ниже может решить проблему; однако, как видно из документации, это влияет на вызовы функций и любых подпрограмм . Так что проблема до сих пор не решена; Я думал, что ответил на свой вопрос, но обнаружил, что нет.

Просто добавьте echo_executing_commands(2, 'local');в начало функционального файла нужную отладку; другими словами, откройте myFun.mи вставьте оператор в начало m-файла функции. Обратите внимание, что это только функция Octave, поэтому для полной совместимости используйте:

if exist('OCTAVE_VERSION', 'builtin') ~= 0; echo_executing_commands(2, 'local');end

0

1 ответ на вопрос

0
hyiltiz

Это не работает

Просто добавьте echo_executing_commands(2, 'local');в начало функционального файла нужную отладку; другими словами, откройте myFun.mи вставьте оператор в начало m-файла функции. Обратите внимание, что это только функция Octave, поэтому для полной совместимости используйте:

if exist('OCTAVE_VERSION', 'builtin') ~= 0; echo_executing_commands(2, 'local');end

Похожие вопросы