Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Depurar en Mac Plataformas

Usando Xcode

Este ejemplo muestra cómo depurar el archivo MEX medianteyprime Xcode.

Copiar origen MEX archivo

El código fuente está en elyprime.c matlabroot Carpeta. En, copie el archivo en una carpeta local de escritura, por ejemplo.MATLAB®/Users/Shared/work Cree la carpeta si no existe y establecla como su carpeta actual.MATLAB

workdir = fullfile('/','Users','Shared','work'); mkdir(workdir) copyfile(fullfile(matlabroot,'extern','examples','mex','yprime.c'),workdir) cd(workdir) 

Compilar archivo MEX fuente

Compile el archivo MEX de origen con la opción, que agrega símbolos de depuración. crea el archivo MEX binario,.-gMATLAByprime.mexmaci64

mex -g yprime.c

Crear vacío Xcode Espacio de trabajo para depurar

En Xcode,

  • Seleccione File > New > Workspace.

  • En el cuadro de diálogo de selección de archivos, establezca el nombre del área de trabajo en el campo.Save As:debug_yprime

  • Seleccione la carpeta en la que desea almacenar el espacio de trabajo./Users/Shared/work Para seleccionar la carpeta, navegue hasta la carpeta o pulse el atajo de teclado para alternar el menú y escribir la ruta completa.Command + Mayús + GGo to the folder:/Users/Shared/work

  • Haga clic.Save

Agregar archivos ayprime Xcode Trabajo

  • Para añadir el archivo al espacio de trabajo, arrástrelo desde la carpeta del Finder a la columna del navegador en el lado izquierdo delyprime.c/Users/Shared/work Xcode ventana del espacio de trabajo.

  • Desactive la opción,.DestinationCopy items into destination group's folder (if needed) Si se desactiva esta opción, se agregarán puntos de interrupción al archivo que se ejecuta.MATLAB

  • Para agregar el archivo, haga clic en.Finish

Crear esquema

  • Seleccione Product > Scheme > New Scheme....

  • Deje establecido en.TargetNone

  • Establecido en.Namedebug

  • Pulse.OK Se abre el cuadro de diálogo de edición de esquemas.

  • Establezca el Run > Info > Executable opción.Other... En la ventana de selección de archivos, pulse el atajo de teclado para alternar el menú.Command + Mayús + GGo to the folder: Especifique la ruta de acceso completa al ejecutable dentro del paquete de aplicación.MATLAB_maci64MATLAB Un ejemplo de una ruta de acceso completa es./Applications/MATLAB_R2016a.app/Contents/MacOS/MATLAB_maci64

  • Seleccione.Wait for executable to be launched

  • Haga clic.Close

Agregar punto de interrupción simbólico

  • Seleccione Debug > Breakpoints > Create Symbolic Breakpoint.

  • Establecido en.SymbolNSApplicationMain

  • Para agregar el siguiente comando de depurador, haga clic en:Add action

    process handle -p true -n false -s false SIGSEGV SIGBUS
  • Si el panel del editor de punto de interrupción desaparece, haga clic con el botón derecho en el nuevo punto de interrupción y seleccione volver a élEdit Breakpoint…

  • Comprobar.Automatically continue after evaluating actions

Establecer puntos de interrupción en su archivo MEX

  • Seleccione View > Navigators > Show Project Navigator.

  • Haga clic en la columna del navegador.yprime.c

  • Haga clic en el canalón situado junto a la línea en la que desea que se detenga la ejecución, por ejemplo, en la primera línea de.mexFunction()

  • Para obtener más información, consulte la Xcode Documentación.

Empezar Xcode Depurador y ejecutarMATLAB

  • Para iniciar el depurador, en Xcode Seleccione Product > Run. Alternativamente, haga clic en el botón con el icono de triángulo cerca de la esquina superior izquierda de la ventana del área de trabajo.Run

  • Espere Xcode para mostrar el mensaje en la parte superior de la ventana del espacio de trabajo.Waiting for MATLAB to launch Esta acción puede tardar algunos segundos, especialmente la primera vez que use este procedimiento.

  • Inicie el ejecutable desde elMATLAB Mac Prompt de terminal (ver) o desde el Finder.Comience desde la ventana de terminal Si ya está en ejecución, haga clic con el botón derecho en el icono en el Dock y seleccione.MATLABMATLABOpen Additional Instance of MATLAB

  • Xcode muestra el mensaje.Running MATLAB: debug

Ejecutar archivo MEX binario enMATLAB

En esta nueva instancia de, cambie la carpeta actual a la carpeta con los archivos y ejecute el archivo MEX.MATLAByprime

workdir = fullfile('/','Users','Shared','work'); cd(workdir) yprime(1,1:4) 

el Xcode depurador se detiene en el primer punto de interrupción.yprime.c

En este punto, puede recorrer el código, examinar las variables, etc., pero para este ejercicio, seleccione en el menú.ContinueDebug La ejecución de acabados y displays:yprimeMATLAB

ans =      2.0000    8.9685    4.0000   -1.0947 

Siempre y cuando esta instancia de continúa ejecutándose, puede ejecutar su archivo MEX repetidamente yMATLAB Xcode detiene los puntos de interrupción establecidos.

Utilizando LLDB

LLDB es el depurador disponible con Xcode En macOS Sistemas. Consulte la documentación proporcionada con el depurador para obtener más información sobre su uso.

En este procedimiento, indica el símbolo del sistema y representa un>>MATLAB% Mac Prompt de terminal. El mensaje del depurador es.(lldb)

Depurar MEX sinJVM

Este ejemplo depura el archivo MEX sin la máquina virtual ().yprimeJava®JVM™ La ejecución en este modo minimiza el uso de memoria y mejora la velocidad inicial de inicio, pero restringe la funcionalidad.MATLAB Por ejemplo, no puede utilizar el escritorio.

  1. Compile el archivo MEX de origen con la opción, que compila el archivo con los símbolos de depuración incluidos.-g En la solicitud de terminal, escriba:

    % mex -g yprime.c
  2. Inicie el depurador lldb utilizando la opción de función:matlab-D

    % matlab -Dlldb 
  3. Empiece a usar la marca de Inicio:MATLAB-nojvm

    (lldb) run -nojvm
  4. En, habilite la depuración con la función y ejecute su archivo MEX:MATLABdbmex

    >> dbmex on >> yprime(1,1:4)

    El depurador atrapa una señal definida por el usuario y el prompt vuelve a lldb.

  5. Está listo para iniciar la depuración.

    A menudo es conveniente establecer un punto de interrupción para que se detenga al principio de la rutina de la puerta de enlace.mexFunction

    (lldb) b mexFunction 
  6. Una vez que haya alcanzado un punto de interrupción, puede usar cualquier comando del depurador para examinar variables, Mostrar memoria o inspeccionar registros. Para proceder de un punto de interrupción, escriba:

    (lldb) c
  7. Después de detenerse en el último punto de interrupción, escriba:

    (lldb) c

    finaliza y muestra:yprimeMATLAB

    ans =      2.0000    8.9685    4.0000   -1.0947 
  8. Desde el símbolo del sistema, devuelva el control al depurador escribiendo:MATLAB

    >> dbmex stop

    O, si ha terminado de ejecutarse, escriba:MATLAB

    >> quit
  9. Cuando haya terminado con el depurador, escriba:

    (lldb) q

    Volverá a la solicitud de terminal.

Depurar MEX conJVM

Para depurar un archivo MEX con el, primer identificador y las señales de proceso.JVMSIGSEGVSIGBUS Empiece y deténgase en la primera instrucción.MATLAB

  • En el prompt del terminal, compile el archivo MEX e inicie al depurador lldb.

    % mex -g yprime.c % matlab -Dlldb 
  • Empezar.MATLAB

    (lldb) process launch -s
  • Dígale al proceso que continúe cuando se produzcan estas señales de proceso.

    (lldb) process handle -p true -n false -s false SIGSEGV SIGBUS 
  • Puede establecer puntos de interrupción y ejecutar otros comandos del depurador.

Temas relacionados