2009-03-05 10 views
7

Ich verwende GDB, um ein geschlossenes Quellprogramm unter Solaris 10 x86 zu debuggen.Solaris GDB: Wie pausiere ich die Ausführung?

Ich lege GDB auf das Programm und die Ausführung fortzusetzen, aber wenn ich die Ausführung möchte später pausieren eine Erinnerung Ich kann nicht zu untersuchen. Wenn ich CTRL-C drücke, druckt es nur^C, statt das Programm anzuhalten und mich auf eine (gdb) Eingabeaufforderung zu setzen.

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 

Wie komme ich zurück zu einer Eingabeaufforderung (gdb)? Mache ich etwas falsch oder wie kann ich das zur Arbeit bringen?

+0

ähnlich verwenden http://stackoverflow.com/questions/5857300/gdb-ctrlc-doesnt-interrupt-process-as- es tut es normalerweise –

Antwort

4

gefunden Nur eine Abhilfe. Geben Sie an einem anderen Terminal folgenden Befehl ein:

GDB wird die Ausführung nach dem debugged-Programm anhalten, das das SIGINT empfängt.

0

ein Fehler in GDB Dies wäre.

Wenn Sie dies mit der aktuellen Version von GDB von CVS Head reproduzieren können, geben Sie bitte eine bug ein.

0

Da Sie mit Solaris arbeiten, und ich sehe, Sie verwenden Bash, Sie wahrscheinlich nicht richtig einrichten Terminal, Bash kann oft eine Menge davon für Sie behandeln, aber wenn Sie in ksh oder etwas waren, Ihre Backspace druckt möglicherweise^H anstelle von Rückschritt (in diesem Fall müssen Sie STY löschen '^ H' ... Sie können Ihre Konsole immer mit STTY SANE setzen.

Ein wahrscheinliches Problem hier, das kein Fehler ist, ist dass die App, die Sie debuggen, Ihre termnial zurücksetzt, ich bin gerade nicht auf einem Solaris-Box, aber der GNU stty erlauben die Sie so etwas wie stty zu tun tostop,

  • [-] tostop Hintergrundjobs Anschlag,

Sie auch von einem anderen Terminal zurückgesetzt oder tset an das Terminal zu schreiben versuchen, neu konfigurieren Ihre^C

von innen gdb laufen können, Sie können die "tty" alias oder einen Satz inferior-tty/path/to/term

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