2015-06-25 76 views
18

gdb bir program başlatırken bu hatayı alıyorum:Ubuntu 14.04, gcc 4.8.4: gdb oldukça baskı nedeniyle Python konunun çalışmıyor

Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 
Traceback (most recent call last): 
File "/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py", line 63, in <module> 
from libstdcxx.v6.printers import register_libstdcxx_printers 
ImportError: No module named 'libstdcxx' 

Google bu hata raporu geldi: http://osdir.com/ml/debian-gcc/2014-02/msg00061.html Bu hata raporu listesi gdb komut isteminde python print sys.path komutunu kullanarak. Ben gdb istemine herhangi piton kullanmaya çalıştığınızda Ancak, bu durumda:

(gdb) python print sys.path 
File "<string>", line 1 
print sys.path 
     ^
SyntaxError: invalid syntax 
Error while executing Python code. 

(gdb) python print "Hello" 
File "<string>", line 1 
print "HellO" 
      ^
SyntaxError: invalid syntax 
Error while executing Python code. 

Ben Ubuntu 14.04 LTS kullanıyorum, ilgili sürüm bilgileri:

$ gcc --version 
gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4 
$ gdb --version 
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1 
$ python --version 
Python 2.7.6 

Açıkçası, benim kurulumunda şeydir kırık. Python, gdb veya başka bir şey mi?

+1

Ubuntu 14.04, python 3 ile gdb'yi oluşturur, bu nedenle 'print' artık bir işlevdir; '(gdb) python print (sys.path)' kullanın –

+1

Teşekkürler, bu soruya cevap veriyor. Ancak, orijinal hata "ImportError: 'libstdcxx adlı bir modül yok" "hala kalır. Bu betiğin python 3'e dönüştürülmesi gerektiği anlamına mı geliyor? – Philipp

+11

'libstdC++. So.6.0.19-gdb.py' dosyasındaki betik, e-posta mesajına göre düzeltilmeli ve muhtemelen python 3'e taşınmış olmalıdır (daha yakından bakmadım). Ancak hedefiniz gcc'nin sistem sürümü ile derlenmişse (yani, çapraz derleme yapmıyorsanız veya sistemle gelen sistemden farklı bir gcc sürümünü kullanıyorsanız), sadece (gdb) python sys.path komutunu kullanabilirsiniz. .Append ("/ usr/pay/gcc-4,8/piton") '; o zaman libstdC++. so.6.0.19-gdb.py' betiğinin yola varolmayan bir dizin eklemesi fark etmez. –

cevap

12

Bunu bir yanıt olarak gönderiyorum, böylece başkalarının bulması daha kolay olacaktır. Mark Plotnick ve webbertiger'in yorumları gerçek cevaptır.

  • yüzden kontrol Eclipse CDT kullanıyorum

o dosyaya bir ~/.gdbinit dosyasını

  • Eklendi python sys.path.append("/usr/share/gcc-4.8/python"); düzenlendi:

    benim için çalıştı ne burada Özetlemek gerekirse Bu dosya pencere> tercihler> GDB> GDB komut dosyasında kullanılıyor.