2009-03-05 33 views
7

Solaris 10 x86 üzerindeki bir kapalı kaynak programında hata ayıklamak için GDB kullanıyorum.Solaris GDB: Nasıl yürütülür?

Gdb'yi programa ekledim ve yürütme işlemine devam ediyorum, ancak yürütmeyi daha sonra duraklatmak istediğimde bazı belleği incelemeye çalışıyorum. CTRL-C'ye bastığımda, yalnızca programı duraklatmak ve beni bir (gdb) istemine bırakmak yerine^C yazdırır.

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 

Bir (gdb) komut istemine nasıl dönebilirim? Yanlış bir şey yapıyorum ya da bunu işe almak için nasıl gidebilirim.

+0

http://stackoverflow.com/questions/5857300/gdb-ctrlc-doesnt-interrupt-process-as- için kullanabileceğiniz o-genelde-does –

cevap

4

Bir geçici çözüm buldum.

kill -INT 1521 

GDB SIGINT alma ayıklanmış program üzerine icra duraklar: başka bir terminal aşağıdaki komutu verir.

0

Bu GDB'de bir hata olur.

CVS Head'dan geçerli GDB sürümüyle bunu yeniden üretebilirseniz, lütfen bir bug dosyasını gönderin.

0

Solaris'i kullandığınız için ve bash'ı kullandığınızı görüyorsanız, muhtemelen terminalinizi doğru şekilde ayarlamıyorsunuz, bash çoğu zaman sizin için çok şey halledebilir, ancak ksh veya bir şeydeyseniz, backspace, baskı yapmak yerine^H yerine baskı yapabilir (bu durumda '^ H' stty'yi silmeniz gerekir ... konsolu her zaman stty sane ile ayarlayabilirsiniz.

Hata olması muhtemel bir problemdir. , hatalarını ayıkladığınız kullanabilir, termnial sıfırlıyor, şu anda bir Solaris kutusu değilim, ama GNU stty Diyelim tostop stty böyle bir şey yapmak için izin

  • [-] Ayrıca, başka bir terminalden sıfırlamak veya tset çalıştırabilir ve-yapılandırmak yeniden terminale

yazmaya çalışın durdurma arka plan işler tostop sırasında^C

gdb içinden

, Eğer "tty" takma adını veya set alt-tty/yol// terim benzer

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