在 GNU Octave 中查看單一檔案的執行情況(echo fcnname on)

在 GNU Octave 中查看單一檔案的執行情況(echo fcnname on)

問題很簡單:在 MATLAB 中,您可以簡單地使用echo myFun on來設定echo單一功能m-file to 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 [email protected]
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

答案1

這不起作用

echo_executing_commands(2, 'local');只需在需要調試的函數文件開頭添加即可;換句話說,打開myFun.m,並將語句插入到函數 m 檔案的開頭。請注意,這是僅有的Octave 函數,為了完全相容,請使用:

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

相關內容