[398] | 1 | .. _services-debug: |
---|
| 2 | |
---|
| 3 | How To Debug ZOO Services |
---|
| 4 | ========================= |
---|
| 5 | |
---|
[406] | 6 | :Authors: Luca Delucchi |
---|
| 7 | :Last Updated: $Date: 2013-03-27 00:06:12 +0100 (Wed, 27 Mar 2013) $ |
---|
| 8 | |
---|
[398] | 9 | There are different ways to debug your services, the most used solutions are via web |
---|
| 10 | or via command line. |
---|
| 11 | |
---|
| 12 | Web |
---|
| 13 | ---- |
---|
| 14 | |
---|
| 15 | Using the web request you can see any problem with the log file of Apache. |
---|
| 16 | |
---|
| 17 | On Unix system usually to log file is in ``/var/log/apache2`` and the useful file |
---|
| 18 | is ``error_log``. A simple way to look inside the file is to use ``tail`` command, |
---|
| 19 | it permits to see the update of the file for each request :: |
---|
| 20 | |
---|
| 21 | tail -f /var/log/apache2/error_log |
---|
| 22 | |
---|
| 23 | If the log is not so clear you can add some information inside your code. You have to write |
---|
| 24 | in the standard error. |
---|
| 25 | |
---|
| 26 | Python |
---|
| 27 | ******** |
---|
| 28 | Using Python for example you can do this |
---|
| 29 | |
---|
| 30 | .. code-block:: python |
---|
| 31 | |
---|
| 32 | import sys |
---|
| 33 | |
---|
| 34 | #add this line when you want see your message |
---|
| 35 | sys.stderr.write("My message") |
---|
| 36 | |
---|
[406] | 37 | .. _web_javascript: |
---|
[398] | 38 | |
---|
[406] | 39 | Javascript |
---|
| 40 | ************ |
---|
| 41 | |
---|
| 42 | You can user ``alert`` to print a string to the standard error. |
---|
| 43 | |
---|
| 44 | .. code-block:: javascript |
---|
| 45 | |
---|
| 46 | // add this line when you want see your message |
---|
| 47 | alert('My message') |
---|
| 48 | // you can debug value of inputs, outputs or conf |
---|
| 49 | alert(inputs["S"]["value"]) |
---|
| 50 | |
---|
| 51 | .. note:: If you try to pass an object it return only ``[object Object]`` |
---|
| 52 | |
---|
[398] | 53 | Command line |
---|
| 54 | -------------- |
---|
| 55 | |
---|
| 56 | It is possible to use the ZOO kernel ``zoo_loader.cgi`` also from command line. |
---|
| 57 | This is really useful to debug in a deeper way your service. |
---|
| 58 | |
---|
| 59 | .. code-block:: bash |
---|
| 60 | |
---|
| 61 | # to use it you have to copy test_service.py and HelloPy.zcfg from |
---|
| 62 | # the example services |
---|
| 63 | ./zoo_loader.cgi "service=wps&version=1.0.0&request=execute&identifier=HelloPy&datainputs=a=your name&responsedocument=Result" |
---|
| 64 | |
---|
| 65 | Using this way you can use standard debug system of the programming language used |
---|
| 66 | in your service. |
---|
| 67 | |
---|
| 68 | GDB |
---|
| 69 | ***** |
---|
| 70 | From command line you can use also the command line tool `GDB <http://www.gnu.org/software/gdb/>`_ |
---|
| 71 | to debug ``zoo_loader.cgi``, you have to run |
---|
| 72 | |
---|
| 73 | .. code-block:: bash |
---|
| 74 | |
---|
| 75 | # launch zoo_loader.cgi from gdb |
---|
| 76 | gdb zoo_loader.cgi |
---|
| 77 | # now run your request |
---|
| 78 | run "service=wps&version=1.0.0&request=execute&identifier=HelloPy&datainputs=a=your name&responsedocument=Result" |
---|
| 79 | |
---|
| 80 | At this point you can ask help to the `ZOO mailing list <http://lists.osgeo.org/cgi-bin/mailman/listinfo/zoo-discuss>`_ |
---|
| 81 | copying the result of the command. |
---|
| 82 | |
---|
| 83 | Python |
---|
| 84 | ********** |
---|
| 85 | For Python you can use ``pdb``, more info at http://docs.python.org/2/library/pdb.html |
---|
| 86 | |
---|
| 87 | .. code-block:: python |
---|
| 88 | |
---|
| 89 | import pdb |
---|
| 90 | |
---|
| 91 | # add this line when you want investigate more in the code |
---|
[406] | 92 | pdb.set_trace() |
---|
| 93 | |
---|
| 94 | Javascript |
---|
| 95 | ************ |
---|
| 96 | |
---|
| 97 | You can use ``alert`` also to print in the console, more info in the :ref:`web_javascript` web section |
---|