2009-03-05 10 views
7

Estoy usando GDB para depurar un programa de fuente cerrada en Solaris 10 x86.Solaris GDB: ¿Cómo pausar la ejecución?

Adjunto gdb al programa y continúo la ejecución, sin embargo, cuando quiero pausar la ejecución más tarde para examinar algo de memoria, no puedo. Cuando presiono CTRL-C, solo imprime^C en lugar de pausar el programa y colocarme en un indicador (gdb).

bash-3.00# gdb --pid=1521 
GNU gdb 6.6 
Copyright (C) 2006 Free Software Foundation, Inc. 
GDB is free software, covered by the GNU General Public License, and you are 
welcome to change it and/or distribute copies of it under certain conditions. 
Type "show copying" to see the conditions. 
There is absolutely no warranty for GDB. Type "show warranty" for details. 
This GDB was configured as "i386-pc-solaris2.10". 
Attaching to process 1521 
Retry #1: 
Retry #2: 
Retry #3: 
Retry #4: 
[New LWP 1] 
0xfe3b5a23 in ??() 
(gdb) c 
Continuing. 
^C^C^C^C^C^C^C^C 

¿Cómo puedo volver a un indicador (gdb)? ¿Estoy haciendo algo mal o cómo puedo conseguir que esto funcione?

+0

similares http://stackoverflow.com/questions/5857300/gdb-ctrlc-doesnt-interrupt-process-as- usualmente lo hace –

Respuesta

4

Acabo de encontrar la solución alternativa. Desde otro terminal, dé el siguiente comando:

kill -INT 1521 

GDB pausará la ejecución sobre el programa depurado que recibe el SIGINT.

0

Esto sería un error en GDB.

Si puede reproducir esto con la versión actual de GDB de CVS Head, presente un archivo bug.

0

Como está utilizando Solaris, y veo que está utilizando bash, probablemente no está configurando su terminal correctamente, bash a menudo puede manejar mucho de esto para usted, pero si estaba en ksh o algo así, su el retroceso puede estar imprimiendo^H en lugar de retrocesos (en ese caso necesita borrar completamente '^ H' ... siempre puede configurar su consola con sty sane.

Un problema probable aquí, que no es un error, es que la aplicación que va a depurar, está restableciendo su termnial, no estoy en una caja de Solaris en este momento, pero el stty GNU permitir de que usted pueda hacer algo así como stty tostop,

  • [-] tostop parada trabajos en segundo plano que intentan escribir en el terminal de

También puede ejecutar restablecer o tset desde otro terminal y volver a configurar su^C

desde el interior del BGF, puede utilizar el alias de "TTY" o conjunto inferior-TTY/ruta/a/term

Set terminal for future runs of program being debugged. 
Usage: set inferior-tty /dev/pts/1 
Cuestiones relacionadas