+++
title = "Herramientas para depurar"
weight = 2
+++

### INFO_DEBUG

Mostrar información de depuración en un cuadro de mensaje.

Si tiene cualquier problema en su código durante el desarrollo de sus macros, puede [abrir un ticket][1] de soporte en el sistema de ticket de este proyecto. Siempre copie la información de depuración mostrada en este mensaje.

```python
import easymacro as app

def info():
    app.msgbox(app.INFO_DEBUG)
    return
```

![Info debug](tools_01.png)


### debug

Mostrar información en la terminal.

```python
import easymacro as app

def test_debug():
    msg = 'Verificar esta información...'
    app.debug(msg)
    return
```

```
11/08/2022 18:15:45 - DEBUG - Verificar esta información...
```


### info

Mostrar mensajes informativos en la terminal.

```python
import easymacro as app

def test_info():
    msg = 'Iniciando proceso...'
    app.info(msg)
    return
```

```
11/08/2022 18:23:53 - INFO - Iniciando proceso...
```


### error

Mostrar mensajes de error en la terminal.

```python
import easymacro as app

def test_error():
    msg = 'Error 505'
    app.error(msg)
    return
```

```
11/08/2022 18:27:34 - ERROR - Error 505
```


### save_log

Guardar registro en un archivo, automáticamente se agrega la fecha y hora.

```python
import easymacro as app

def test_save_log():

    app.save_log('/home/mau/log.txt', 'PyUNO')
    app.save_log('/home/mau/log.txt', 'Maldito Mundo')

    return
```

```
cat ~/log.txt
2022-08-11 18:30:11 - 'PyUNO'
2022-08-11 18:30:11 - 'Maldito Mundo'
```


### msgbox

Mostrar cualquier información en un cuadro de mensaje.

```python
def message():

    msg = 'Por favor, consume menos.'
    app.msgbox(msg)

    msg = ('uno', 2, 'tres')
    app.msgbox(msg)

    msg = {'nombre': 'Teresa'}
    app.msgbox(msg)

    app.msgbox(app)

    return
```

### catch_exception

Capturar cualquier error que se produzca al ejecutar una macro.

```python
@app.catch_exception
def test_capturar_error():
    r = 1 / 0
    return
```

```
11/08/2022 18:44:36 - ERROR - test_capturar_error
Traceback (most recent call last):
  File "/home/mau/.config/libreoffice/4/user/Scripts/python/pythonpath/easymacro/easytools.py", line 115, in func
    return f(*args, **kwargs)
  File "/home/mau/.config/libreoffice/4/user/Scripts/python/test.py", line 18, in test_capturar_error
    r = 1 / 0
ZeroDivisionError: division by zero
```

{{% notice warning %}}
Usa este método solo en tiempo de desarrollo. No la uses en producción.
{{% /notice %}}


### mri

[MRI][2] es la mejor extensión para inspeccionar cualquier objeto UNO de LibreOffice. Necesita instalarla primero para poder llamarla.


```python
def inspeccionar_objeto():
    obj = app.active
    app.mri(obj)
    return
```

### inspect

Inspeccionar un objeto.

```python
def inspeccionar_objeto():
    doc = app.active
    data = app.inspect(doc)
    for p in data.properties:
        app.debug(p)
    for m in data.methods:
        app.debug(m)
    return
```

Vaciar en una hoja de calculo.

```python
def inspeccionar_objeto():
    doc = app.active
    app.inspect(doc, True)
    return
```


[1]: https://git.cuates.net/elmau/easymacro/issues
[2]: https://github.com/hanya/MRI
