2016-09-07 23 views
8

Sorunun, Windows 10 üzerindeDebugger kez "verilerinin toplanması ..."

pycharm ile bir Python (3.5) programını (PyCharm Community Edition 2016.2.2 ; Build #PC-162.1812.1, built on August 16, 2016 ; JRE: 1.8.0_76-release-b216 x86 ; JVM: OpenJDK Server VM by JetBrains s.r.o) ayıklama ediyorum: Bazı kopma noktalarında durduğunda, Debugger penceredir Sonunda zaman aşımı olan "Veri Toplama" da sıkıştı. (ile çerçeve değişkenleri gösterilemiyor)

Görüntülenen veriler ne özel ne de özellikle büyüktür. Pycharm'ın her ne kadar söz konusu verilerin bazı değerleri üzerinde koşullu bir kesme noktası iyi sonuçlandığından (program kırılmaları) bir şekilde kullanılabilir - bu, sadece gösterim amacıyla (operasyonel amaçların aksine) başarısızlıkla sonuçlanacak gibi görünüyor.

Yere göre bir işleve adım attığımda kırılma noktam var, verileri doğru şekilde görüntüleniyor. Yığına çıkarken (arama işlevine, ilk adımda istediğim noktaya gelip durduğum yere) - "Veri toplama" zaman aşımına tekrar takıldım.

En azından 2005'ten beri aynı noktadan ortaya çıkarılan sayısız sorun var. Bazıları düzeltildi, bazıları değil. Düzeltmeler genellikle en son sürüme güncellendi (sahip olduğum).

Bu sorun ailesini düzeltmek veya çözmek için gidebileceğim genel bir yön var mı?


DÜZENLEME: Bir yıl sonra sorun hala var ve geliştiricilerden ipuçları de hiç bir tepki/hata sonrası destek büyüdü hala var.

+1

Aynı sorunu çözüyorum. Bir çözüm veya en azından bir açıklama buldunuz mu? – Josh

+4

Ne yazık ki değil. Devlerle bir bilet açtım ama sıfır tepki (başka bir konu için başka bir biletle aynı) vardı. Ürün harika olsa da, destek mevcut değildir. – WoJ

+1

Keras'ta LSTM ağlarına uyuyorum ve hata ayıklayıcı konsoldan 'model.predict' yapmaya çalıştığımda bu saçmalığı alıyorum. Feedforward ağlarla aynı şeyi yaptığımda olmazdı. Kod aslında hata ayıklayıcı/konsolda değilken gayet iyi çalışır. Tuhaf ve sinir bozucu. – Josh

cevap

1

Bunun, bazı sınıfların çok ayrıntılı bir varsayılan yöntemi olan __str __() sahip olmasından kaynaklandığını düşünüyorum. Pycharm, yerel değişkenleri bir kesme noktasına ulaştığında görüntülemek için bu yöntemi çağırır ve dizgeyi yüklerken takılır. Bunun üstesinden gelmek için kullandığım bir numara, hataya neden olan sınıfı el ile düzenlemektir ve daha az değerli bir şey için __str __() yönteminin yerini alır. Bir örnek olarak

, bu pytorch _TensorBase sınıfı (ve uzanan tüm tensör sınıfları) olur, ve benzeri gibi __str __() yöntemini değiştirerek, pytorch kaynak hamlaç/tensor.py düzenleyerek çözülebilir:

def __str__(self): 
     # All strings are unicode in Python 3, while we have to encode unicode 
     # strings in Python2. If we can't, let python decide the best 
     # characters to replace unicode characters with. 
     return str() + ' Use .numpy() to print' 
     #if sys.version_info > (3,): 
     # return _tensor_str._str(self) 
     #else: 
     # if hasattr(sys.stdout, 'encoding'): 
     #  return _tensor_str._str(self).encode(
     #   sys.stdout.encoding or 'UTF-8', 'replace') 
     # else: 
     #  return _tensor_str._str(self).encode('UTF-8', 'replace') 

Optimal olmaktan çok uzaktır ama elinize ulaşır.

+0

Bu iyi bir bilgidir, ancak benim durumumda, asma kodum (sınıfsız da olsa). Bu, çoğunlukla çoklu işlem programlarında hata ayıklama olduğunda olur. – WoJ