Difference between revisions of "Debugging Octave"

From Octave
Jump to navigation Jump to search
m (Added chapter "Debugging oct-files")
(→‎Debugging oct-files: Inserted a small howto)
Line 13: Line 13:
  
 
= Debugging oct-files =
 
= Debugging oct-files =
 +
 +
To debug oct-files, avoid making any optimization during compilation. Use <code>export CXXFLAGS="-ggdb -Wall -O0"</code> for C++ code or <code>export CFLAGS="-ggdb -Wall -O0"</code> for C code to suppress optimization. Compile the oct-file with the debug flag <code>-g</code> which enables debug symbols
 +
 +
<syntaxhighlight lang="bash">
 +
mkoctfile -g file.cpp
 +
</syntaxhighlight>
 +
 +
start now the GNU debugger with octave
 +
 +
<syntaxhighlight lang="bash">
 +
gdb octave
 +
</syntaxhighlight>
 +
 +
and run it
 +
 +
<syntaxhighlight lang="bash">
 +
(gdb) run
 +
</syntaxhighlight>
 +
 +
Octave will start up. Now halt execution of Octave by typing ctrl+c, you'll see again the gnu prompt. Set now a breakpoint in the line of interest
 +
 +
<syntaxhighlight lang="bash">
 +
(gdb) b file.cpp:40
 +
</syntaxhighlight>
 +
 +
by typing now c the execution of octave will continue and you can run your oct-file
 +
 +
<syntaxhighlight lang="matlab">
 +
octave:1> x = file(y)
 +
</syntaxhighlight>
 +
 +
the debugger will now stop on the above defined line and you can start debugging according to the manual of GNU debugger.
  
 
= Tools for debugging =
 
= Tools for debugging =

Revision as of 07:33, 23 August 2012

Preliminaries

Since compilation of all the source from scratch can take long it is good to have a source folder where most of the source has been compiled. To do this ...

Workflow

  1. Clone the repository.
  2. Regenerate the scripts.
  3. Configure.
  4. Compile the code.
  5. Start debugging.

Basic debugging processes

Error & trace the stack

Debugging oct-files

To debug oct-files, avoid making any optimization during compilation. Use export CXXFLAGS="-ggdb -Wall -O0" for C++ code or export CFLAGS="-ggdb -Wall -O0" for C code to suppress optimization. Compile the oct-file with the debug flag -g which enables debug symbols

mkoctfile -g file.cpp

start now the GNU debugger with octave

gdb octave

and run it

(gdb) run

Octave will start up. Now halt execution of Octave by typing ctrl+c, you'll see again the gnu prompt. Set now a breakpoint in the line of interest

(gdb) b file.cpp:40

by typing now c the execution of octave will continue and you can run your oct-file

octave:1> x = file(y)

the debugger will now stop on the above defined line and you can start debugging according to the manual of GNU debugger.

Tools for debugging

GBD

To start Octave under gdb use the script run-octave at the top level of the source tree and run it with the command-line option -g like this

cd /octave/source/tree ./run-octave -g


Most used commands

gdb documentation

Emacs

In short:

To start Octave in debug mode within emacs type

M-x gud-gdb

then change the command in the minibuffer to

Run gud-gdb (like this): /path/to/octave/source/tree/run-octave -gud

For more info use this link to the emacs manual section on debuggers operation

ddd

gui for gdb