sistema sirve significa que para operativo línea lineas linea interfaz grafica ejemplos definicion consola concepto comandos cli c xcode debugging macos instruments

sirve - interfaz grafica



Cómo usar los instrumentos y mostrar la consola en las aplicaciones de líneas de comando. (4)

Es fácil. Vea la captura de pantalla.

Estoy usando Xcode en OSX para desarrollar aplicaciones de línea de comandos C. También me gustaría utilizar los instrumentos para crear perfiles y encontrar fugas de memoria.

Sin embargo, no pude encontrar una manera de mostrar la consola al iniciar la aplicación desde dentro de Instruments. Tampoco puedo adjuntarme a un proceso de línea de comandos en ejecución (sale con un error):

Aquí hay un código de ejemplo:

#include <stdio.h> #include <signal.h> #include <stdlib.h> #include <setjmp.h> static sigjmp_buf jmpbuf; void handler(int sig) { char c[BUFSIZ]; printf ("Got signal %d/n", sig); printf ("Deseja sair? (s/n) "); fgets(c, sizeof(c), stdin); if(c[0] == ''s'') { exit(0); } else { siglongjmp(jmpbuf, 1); } } int main(void) { char buf[BUFSIZ]; signal(SIGINT, handler); sigsetjmp(jmpbuf, 1); while(1) { printf(">>>"); fgets(buf, sizeof(buf), stdin); printf ("Introduziu: %s/n", buf); } return(0); }

Aquí está el error que obtuve después de iniciar Instruments, e intentar adjuntarme al proceso en ejecución en xcode:

[Switching to process 1475] [Switching to process 1475] Error while running hook_stop: sharedlibrary apply-load-rules all Error while running hook_stop: Invalid type combination in ordering comparison. Error while running hook_stop: Invalid type combination in ordering comparison. Error while running hook_stop: Error while running hook_stop: Error while running hook_stop: Error while running hook_stop: Error while running hook_stop: Error while running hook_stop: Error while running hook_stop: Unable to disassemble __CFInitialize.

¿Alguna idea?


Es un poco tarde para contribuir a este viejo hilo, sin embargo, he encontrado que la mejor manera de perfilar una utilidad de línea de comandos es usar iprofiler (página de iprofiler ). Esto permite que se recopilen datos desde la línea de comandos simplemente agregando esto al inicio de la línea de comandos:

iprofiler -leaks -d $HOME/tmp

(Tengo un directorio temporal privado en $HOME/tmp , por lo que es posible que necesite usar /tmp o dejar la opción de línea de comando -d completamente desactivada).

Mis scripts de prueba lo agregan automáticamente a la línea de comandos si se define $FINDLEAKS (y se valgrind si se ejecuta bajo Linux).

Esto luego genera un archivo .dtps (en realidad un directorio) que puede cargarse y analizarse con instrumentos .

Si está compilando usando clang , simplemente agregue tanto -O3 como -g ( clang no admite la opción de línea de comando -pg ).


Puede cambiar la salida en el menú desplegable Opciones al elegir su objetivo. La salida aparecerá en la Consola del sistema (Aplicaciones / Utilidades / Consola).


Vea esta pregunta para su respuesta.

De Brad Larson en el mismo:

Ejecute su aplicación desde Xcode para que la salida de la consola se canalice allí. Mientras se ejecuta la aplicación, inicie Instrumentos y elija un instrumento apropiado. En Destino predeterminado en la barra de menú, seleccione iPhone o Computadora (lo que sea apropiado para lo que está probando), y en Adjuntar al proceso encuentre el nombre de su ejecutable.

Cuando hace clic en el botón de grabación, su aplicación debe comenzar a perfilarse en Instrumentos mientras la salida de su consola se dirige a Xcode. Desafortunadamente, este proceso de conexión deberá realizarse una vez que se haya iniciado la aplicación, por lo que es posible que tenga que perfilar el inicio de la aplicación por separado.

Editar: si eso no funcionó, es posible que solo tengas que reiniciar tu computadora. ¿Ya hiciste eso?