2009-03-05 17 views
7

Używam GDB do debugowania zamkniętego programu źródłowego w systemie Solaris 10 x86.Solaris GDB: jak przerwać wykonywanie?

Dołączam program gdb do programu i kontynuuję wykonywanie, jednak gdy chcę wstrzymać wykonywanie później, aby zbadać pamięć, nie mogę. Kiedy wciskam CTRL-C, wypisuję tylko^C zamiast wstrzymywać program i upuszczać mnie do znaku zachęty (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 

Jak wrócić do pytania (gdb)? Czy robię coś złego lub jak mogę to załatwić?

+0

podobny http://stackoverflow.com/questions/5857300/gdb-ctrlc-doesnt-interrupt-process-as- to zwykle robi –

Odpowiedz

4

Właśnie znalazłem obejście. Z innego terminalu podaj następującą komendę:

kill -INT 1521 

GDB wstrzyma wykonywanie na debugowanym programie odbierającym SIGINT.

0

To byłby błąd w GDB.

Jeśli możesz odtworzyć to z aktualną wersją GDB z CVS Head, zgłoś bug.

0

Podczas korzystania z Solaris i widzę, że używasz bash, prawdopodobnie nie ustawiasz poprawnie terminala, bash często może poradzić sobie z wieloma z tego dla ciebie, ale jeśli byłeś w ksh lub czymś, twój backspace może drukować^H zamiast backspacingu (w takim przypadku potrzebujesz stty wymazać '^ H' ... zawsze możesz ustawić konsolę na stty sane

Prawdopodobnym problemem tutaj, który nie jest błędem, jest że aplikacja jesteś debugowanie, jest zresetowanie termnial, nie jestem na polu Solaris teraz, ale stty GNU pozwalają na ciebie zrobić coś podobnego stty tostop,

  • [-] tostop stopu tle zadań, które starają się pisać do terminala

Można również uruchomić zresetować lub tset z innego terminala i ponownie skonfigurować^C

od wewnątrz gdb, można użyć "tty" alias lub niższą niż tty/ścieżka/do/term

Set terminal for future runs of program being debugged. 
Usage: set inferior-tty /dev/pts/1 
Powiązane problemy