miércoles, febrero 03, 2010

Develop in C/C++ with Eclipse CDT.

Les comparto una breve introduccion al desarrollo de aplicaciones C y C++ con eclipse. Este tutorial esta pensado para aquellos que tienen poca experiencia con el Eclipse.
El uso de este entorno de desarrollo forma parte de una iniciativa de usarlo para desarrollo de aplicaciones utilizando la biblioteca OpenCV (Vision Library), que permite procesar imagenes estáticas y dinamica que puede ser programada en C/C++ y Python.

Eclipse es un entorno de desarrollo IDE de código libre que está basado en un plataforma de desarrollo extensible mediante plugings (Plugin-Development Environment PDE). Está desarrollado en Java pero permite agregar plugines para programar en gran cantidad de lenguajes de programación, herramientas de diseño , de control de ciclo de vida del desarrollo ,de control de fuentes (SVN, CVS) etc.

Entre los proyectos existentes para Eclipse se pueden clasificar en las siguientes grupos más importantes:

1- Desarrollo de aplicaciones empresariales.

2- Desarrollo de aplicaciones embebidas y móviles.

3- Aplicaciones basadas en clientes ricos.

4- Aplicaciones web basadas en interfaces ricas (Rich Internet Applications)

5- Desarrollo de entornos de trabajo (frameworks) para múltiples usos.

6- Administración de ciclo de vida del desarrollo.

7- Herramientas para aplicaciones basadas en Arquitecturas Orientadas a Servicios (SOA)

La documentación de este IDE se puede obtener del sitio oficil de Eclipse

Para el caso de queres programar en C o C++ vamos a utilizar el plugin de eclipse para desarrolladores de C++ CDT.

El Eclipse es multiplataforma, en nuestro caso los vamos a instalar sobre un Kubuntu dentro de una máquina virtual en Virtual Box.

Desde este IDE se puede crear proyectos , incluir código desde otros archivos, depurar paso a paso pudiendo ver es estado de las variables etc.

Al igual que todo paquete de Eclipse al iniciar la aplicación se debe seleccionar un espacio de trabajo (workplace), el Eclipse indica una por defecto que está ubicada en el perfil de usuario, esta carpeta contendrá los proyectos y códigos fuente que desarrollemos. Es posible crear otro workplace y pasar de uno a otro según convenga usando el comando File->Switch workplace

.

Proceso de instalación

La instalación del eclipse se efectúa de la siguiente forma

$sudo apt-get install eclipse

Una vez implementado el IDE se debe instalar el plugin del CDT, la forma recomendada a partir del a versión 3.4 del eclipse es usando la opción de instalación de nuevo software

Para instalar un plugin de Eclipse se de indicar la url de donde se obtendrá los código, el IDE los baja , los compila y configura automáticamente.

Para el caso del CDT esa url se obtiene de su sitio oficial http://www.eclipse.org/cdt/

El siguiente diagrama indica como se debe proceder.

1- Ejecutar el wizard para instalar proyectos nuevos




2- Configurar la url de donde se bajaran los paquetes del CDT.



Código de ejemplo

Para los impacientes vamos construir un proyecto de ejemplo y con él mostraremos las funcionalidades básicas del IDE.

El Eclipse tiene la posibilidad de crear proyectos donde internamente cargaremos nuestros códigos. Estos proyectos estarán dentro de perspectiva de Eclipse, por defecto se carga la correspondiente a Java.

En este ejemplo construiremos un ejemplo muy simple que define algunas variables y utilizando un bucle las muestra en pantalla que nos va a servir para mostrar funcionalidades básicas del IDE.

1- Crear un proyecto C del tipo consola



1.1 Creamos un proyecto C tipo consola





1.2 Dejar la opciones por defecto.

2- Código de ejemplo



3- Compilación y ejecución.

El CDT al instalarse utiliza por defecto el gcc. Al ejecutar el programa el CDT lo compila y en el caso de no tener ningun error ejecuta el codigo y muestra los resultados.

Para ejecutar el codigo seleccionar el siguiente menú:

Run → Run (Ctrl + F11) y Seleccionar correr proyecto C/C++.

El resultado para este codigo de ejemplo es la siguiente:

0a 1b 2c 3d 4e

4- Debugging

El CDT utiliza el debugguing del gcc para poder detener, inspeccionar los valores de las variables, modificarlas, correr paso a paso, agregar breakpoints, correr dentro de funciones etc.

Para ejecutar el debug del codigo seleccionar el siguiente menú:

Run → Debug (F11)

La primera vez pide la configuracion del debugguer, seleccionar GDB

Luego el CDT indicara que al ejecutar el debug el Eclipe cambiara de perspectiva, este es un proceso habitual para la mayoria de los lenguajes de programacion soportados por el IDE




El el diagrama se visualizan las diferenes secciones de la perpectiva de debug

- Debug: Indica el proceso que se esta ejecutan, en nuestro ejemplo la funcion main()

- Variables. En esta secciones se puede ver el estado de las variables correspondiente a la línea del código que estamos analizando.

- Breakpoints: Muestra los breakpoints que tenemos marcado en el código, una forma de crearlo es hacer doble click sobre la barrar vertical de la izquierda del codigo justo en la línea donde queremos que se detenga la ejecucion del programa.

- Register: Permite ver el estado de los registros del procesador, esta opcion es muy util para cuando tener codigo assembler junto con el codigo C.

- DSF Disassembly: Se puede ver el codigo assembler correspondiente al codigo C que estamos analizando.

El debugguer permite ademas ver el estado de las variables con solo apuntaar con el cursor del mouse sobre la variable a inspeccionar.

Comandos basicos de debugguing:

F11: Ejecuta el codigo en modo debug, esto hace que el debugguer corra el programa hasta el primer breakpoint, si no se asignaron breakpoints corre hasta el final del programa.

F5: Ejecuta linea a linea, esta opcion es muy util para ver como evoluciona el estado de la variables.

F6: Ejecuta linea a linea como F5 pero con la diferencia que si en la linea a ejecutar existe una llamada a funcion el debuguer se introduce en ella para ejecutar linea a linea su codigo interno. Esto no aplica a llamadas a funciones de la biblioteca estandard u otra biblioteca pues se require tener el codigo C disponibles.

En la seccion de disassembly se muestra el linea a linea pero del codigo assembler correspondiente.

F8: Ejecuta el codigo hasta el siguiente breakpoint.

Conclusión:

El Eclipse CDT es una plugin de eclipse que permite programar en C/C++ para en entorno donde lo tengamos instalado, en nuestro caso se instaló para programar en C/C++ para Linux.Para el caso de Windows se debe instalar el compilador de C/C++ compatible con gcc (MinGW entre otros), ver documentación del CDT para este caso.

Si ya trabajaron con Eclipse para Java,PHY, JMe , Python u otros de los tantos lenuajes soportado por sus plugines usar el CDT es muy transparente, esa es una de la grandes ventajas que tiene este IDE. El resto es cuestión de práctica.