Pregunta

Estoy intentando escribir pruebas que interactúan con el BGF, pero estoy teniendo problemas para capturar la salida. Me gustaría que un archivo de registro que se genera que se parece a lo que se habría visto en un terminal tenían la prueba ha ejecutado con la mano. BGF está demostrando ser muy terco cuando se trata de la captura de su producción sin embargo.

he sido capaz de escribir guiones esperan que sean capaces de interactuar con el BGF y cuya salida puede redirigirse a un archivo de registro, pero no quiero escribir mis pruebas en TCL. Estoy esperando para usar maravilloso, que es compatible con Java. Por alguna razón con Perl de esperar y ExpectJ la salida del programa siempre va al terminal y no puede ser redirigido a un archivo.

He intentado iniciar un proceso de GDB de Java utilizando ProcessBuilder y sobre todo funciona, pero la salida de declaraciones de impresión nunca aparecen en la salida estándar y no puede ser capturado. Pensé que si esperan que las obras a continuación, me gustaría lanzar esperar de Java y tienen que interactúan con el BGF pero en este caso la mayor parte de la producción del programa está perdido, no aparece en la salida estándar del proceso creado.

Así que mi pregunta es, ¿cómo puedo escribir una prueba en la maravillosa (Java estaría bien también) que interactúa con el BGF y puede capturar toda la producción?

Pseudo-código:

process = "gdb -q".execute()
waitForPrompt()
send("file exec")
waitForPrompt()
send("run")
send("quit")

Archivo de registro:

(gdb) file exec
Reading symbols from exec...done.
(gdb) run
Starting program: exec
<... output ...>

Program exited normally.
(gdb) quit
¿Fue útil?

Solución

Una posibilidad es que la salida GDB es objeto de dumping en el error estándar y sólo se están capturando salida estándar. Usted debe ser capaz de solucionar este problema con una redirección, algo como esto creo:

 process = "gdb -q 2&>1".execute()

Una segunda suposición es que puede ser digno de la comprobación de lo que "mostrar en modo interactivo", dice en los casos de trabajo y no trabajo. Si difieren tratar "set-modo interactivo," antes de hacer cualquier otra cosa.

Una tercera opción es usar función de registro del BGF para escribir el archivo de registro ( "conjunto de archivos de registro" y "conjunto de registro en") y evitar tener que capturar la salida de uno mismo.

Otros consejos

Si su prueba implica el uso de GDB para depurar realmente algo, en oposición a las pruebas GDB sí, probablemente debería mirar en el uso del BGF / interfaz de mi.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top