Antes de pasar por el engorroso proceso de depuración, utilice el marco de pruebas para comprobar si las pruebas estándar funcionan correctamente. Si no se ejecutan por completo, es posible que haya un problema con la instalación.
La depuración de FreeCAD se realiza mediante algunos mecanismos internos. La versión de línea de comandos de FreeCAD ofrece varias opciones para facilitar la depuración.
Estas son las opciones reconocidas actualmente en FreeCAD 0.19:
Opciones genéricas:
-v [ --version ] Imprime la cadena de la versión -h [ --help ] Imprime el mensaje de ayuda -c [ --console ] Comienza en modo consola --response-file arg También se puede especificar con '@nombre' --dump-config Configuración de volcados --get-config arg Imprime el valor de la clave de configuración solicitada
Configuración:
-l [ --write-log ] Escribe un archivo de registro en:
$HOME/.local/share/FreeCAD/FreeCAD.log (Linux)
$HOME/Library/Application\ Support/FreeCAD/FreeCAD.log (macOS)
%APPDATA%\FreeCAD\FreeCAD.log
--log-file arg A diferencia de --write-log, esto permite iniciar sesión en un
archivo arbitrario
-u [ --user-cfg ] arg Archivo de configuración de usuario para cargar/guardar configuraciones de usuario
-s [ --system-cfg ] arg Archivo de configuración del sistema para cargar/guardar la configuración del sistema
-t [ --run-test ] arg Caso de prueba - o 0 para todos
-M [ --module-path ] arg Rutas de módulos adicionales
-P [ --python-path ] arg Rutas adicionales de Python
--single-instance Permite ejecutar una única instancia de la aplicación
Si utiliza una versión de FreeCAD muy reciente, es posible que se produzca un fallo. Puede ayudar a solucionar estos problemas proporcionando a los desarrolladores un registro de errores. Para ello, necesita ejecutar una versión de depuración del software. La opción "versión de depuración" es un parámetro que se configura durante la compilación, por lo que tendrá que compilar FreeCAD por su cuenta u obtener una versión de depuración precompilada.
Depuración de Linux →
Requisitos previos:
Pasos: Ingrese lo siguiente en la ventana de su terminal:
Encuentre el binario FreeCAD en su sistema:
$ whereis freecad
freecad: /usr/local/freecad <--- for example
$ cd /usr/local/freecad/bin
$ gdb FreeCAD
GNUdebugger generará información de inicialización. El (gdb) muestra que GNUDebugger se está ejecutando en la terminal, ahora ingrese:
(gdb) handle SIG33 noprint nostop
(gdb) run
FreeCAD ahora se iniciará. Realice los pasos que hacen que FreeCAD se bloquee o se congele, luego ingrese en la ventana de terminal:
(gdb) bt
Esto generará una lista larga de exactamente lo que estaba haciendo el programa cuando falló o se congeló. Incluya esto con su informe de problemas.
(gdb) bt full
Imprima también los valores de las variables locales. Esto se puede combinar con un número para limitar la cantidad de fotogramas mostrados.
Depuración de macOS →
Requisitos previos:
Pasos: Introduzca lo siguiente en la ventana de su terminal:
$ cd FreeCAD/bin
$ lldb FreeCAD
LLDB mostrará información de inicialización. (lldb) muestra que el depurador se está ejecutando en la terminal, ahora ingrese:
(lldb) run
FreeCAD se iniciará ahora. Realice los pasos que provocan que FreeCAD se bloquee o se congele, y luego ingrese en la ventana del terminal:
(lldb) bt
Esto generará una lista detallada de lo que estaba haciendo el programa cuando falló o se bloqueó. Incluya esta información en su informe de problemas.
(Aplicable a Linux y macOS)
A veces resulta útil saber qué bibliotecas carga FreeCAD, especialmente si se cargan varias bibliotecas con el mismo nombre pero de versiones diferentes (colisión de versiones). Para ver qué bibliotecas carga FreeCAD cuando falla, abra una terminal y ejecute el depurador. En una segunda ventana de terminal, averigüe el ID del proceso de FreeCAD:
ps -A | grepFreeCAD
Utilice el ID devuelto y páselo a lsof:
lsof -p process_id
Esto imprime una larga lista de recursos cargados. Por ejemplo, si intenta determinar si se ha cargado más de una versión de la biblioteca Coin3d, desplácese por la lista o busque directamente "Coin" en la salida:
lsof -p process_id | grep Coin
Para un enfoque más moderno para depurar Python, consulte estas publicaciones:
Depuración de winpdb →
Aquí tiene un ejemplo de cómo usar Winpdb dentro de FreeCAD:
Necesitamos el depurador de Python: Winpdb. Si no lo tiene instalado, en Ubuntu/Debian instálelo con:
sudo apt-get install winpdb
Ahora vamos a configurar el depurador.
Ahora ejecutaremos un script de prueba de Python en FreeCAD paso a paso.
import rpdb2
rpdb2.start_embedded_debugger("test")
import FreeCAD
import Part
import Draft
print "hello"
print "hello"
import Draft
points=[FreeCAD.Vector(-3.0,-1.0,0.0),FreeCAD.Vector(-2.0,0.0,0.0)]
Draft.makeWire(points,closed=False,face=False,support=None)
Depuración en VS Code →
Requisitos previos:
# In a cmd window that has a path to you local Python 3:
pip install ptvsd
# Then if your Python is installed in C:\Users\<userid>\AppData\Local\Programs\Python\Python37
# and your FreeCAD is installed in C:\freecad\bin
xcopy "C:\Users\<userid>\AppData\Local\Programs\Python\Python37\Lib\site-packages\ptvsd" "C:\freecad\bin\Lib\site-packages\ptvsd"
Documentación de Visual Studio Code para la depuración remota
Pasos: * Agregue el siguiente código al principio de tu script.
import ptvsd
print("Waiting for debugger attach")
# 5678 is the default attach port in the VS Code debug configurations
ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True)
ptvsd.wait_for_attach()
"configurations": [
{
"name": "Python: Attacher",
"type": "python",
"request": "attach",
"port": 5678,
"host": "localhost",
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "."
}
]
},
from sys import path
sys.path.append('/path/to/site-packages')
La ruta apunta al directorio donde se instaló ptvsd.
En la versión para Mac, la ruta es /Applications/FreeCAD.App/Contents/Resources/bin/python.
Puede localizarlo en su sistema escribiendo
import sys
print(sys.executable)
en la consola de Python de FreeCAD.
Depuración de LiClipse →
> ./your location/FreeCAD_xxx.AppImage --appimage-extract
> cd squashfs-root/
squashfs-root> ./usr/bin/freecadcmd
tu_ruta_local/squashfs-root/usr/bin/python.pydevd.py en su instalación de liclipse.tu_ubicación/liclipse/plugins/org.python.pydev.xx/pysrc.import sys; sys.path.append("path ending with /pysrc")
import pydevd; pydevd.settrace()
squashfs-root> ./usr/bin/freecad
pydevd.settrace()) desde FreeCAD, como lo haría normalmente.Consulte el artículo principal sobre Pyzo.
Para los desarrolladores que necesiten profundizar en el núcleo de OpenCasCade, el usuario @abdullah ha creado una thread orientación que explica cómo hacerlo.