Debug on Linux Platforms - MATLAB & Simulink (original) (raw)

Main Content

The GNU® Debugger gdb, available on Linux® systems, provides complete source code debugging, including the ability to set breakpoints, examine variables, and step through the source code line-by-line.

In this procedure, the MATLAB® command prompt >> is shown in front of MATLAB commands, and linux> represents a Linux prompt; your system might show a different prompt. The debugger prompt is<gdb>.

This example shows the general steps to debug yprime.c, found in the MATLABfullfile(matlabroot,"extern","examples","mex") folder.

Attach to MATLAB Process with gdb

  1. Start MATLAB.
  2. Compile the source MEX file with the -g option, which builds the file with debugging symbols included. At the MATLAB prompt, type:
  3. Get the MATLAB process ID number. (since R2025a)
  4. At the Linux terminal, attach MATLAB to gbd using the process ID number.
  5. Start the debugger.
  6. When you want to start debugging MATLAB, interrupt gdb and enter the following commands.
<gdb> Ctrl+C  
<gdb> handle SIGUSR1 stop print  
  1. If the JVM® is loaded, type this command:
<gdb> handle SIGSEGV SIGBUS nostop noprint  

To see if Java® is loaded, at the MATLAB prompt, type: 8. Set a breakpoint at mexFunction, the entry point to your MEX function.

<gdb> break mexFunction  
<gdb> continue  
  1. In MATLAB, run your MEX file.
  2. At this point you can step through your code.
  3. To complete the debugging session, type:
  4. yprime finishes and MATLAB displays:
    ans =
    2.0000 8.9685 4.0000 -1.0947

Start MATLAB with gdb

To debug with gdb:

  1. At the Linux prompt, start the gdb debugger using thematlab function -D option.
  2. Tell gdb to stop for debugging.
<gdb> handle SIGUSR1 stop print  
  1. Start MATLAB without the desktop.
  2. If the JVM is loaded, type this command:
<gdb> handle SIGSEGV SIGBUS nostop noprint  

To see if Java is loaded, at the MATLAB prompt, type: 5. Compile the source MEX file with the -g option, which builds the file with debugging symbols included. For this example, at the MATLAB prompt, type:
In MATLAB, enable debugging with the dbmex function and run your binary MEX file.

dbmex on
yprime(1,1:4) 6. You are ready to start debugging.
It is often convenient to set a breakpoint atmexFunction so you stop at the beginning of the gateway routine.

<gdb> break mexFunction  
<gdb> continue  
  1. Once you hit one of your breakpoints, you can make full use of any commands the debugger provides to examine variables, display memory, or inspect registers.
    To proceed from a breakpoint, type:
  2. After stopping at the last breakpoint, type:
    yprime finishes and MATLAB displays:
    ans =
    2.0000 8.9685 4.0000 -1.0947
  3. From the MATLAB prompt you can return control to the debugger by typing:
    Or, if you are finished running MATLAB, type:
  4. When you are finished with the debugger, type:
    You return to the Linux prompt.

Refer to the documentation provided with your debugger for more information on its use.

See Also

dbmex | jenv