2016-09-07 4 views
8

私は問題のWindows 10上デバッガ回「データの収集...」

Pycharmとパイソン(3.5)プログラム(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)をデバッグしています:いくつかのブレークポイントで停止したときに、デバッガウィンドウがあります最終的にタイムアウトする "データの収集"で立ち往生します。でフレーム変数を表示できません)

表示されるデータは特別ではなく、特に大きくありません。上記データのいくつかの値の条件付きブレークポイントがうまく機能する(プログラムがブレークする)ので、Pycharmが何らかの形で利用できるようになります。表示目的で収集するプロセスが失敗するように見えます。

私は私が私のブレークポイントを持っている場所の周りの関数にステップすると、そのデータが正しく表示されています。私がスタックの上に行くと(私は、私が最初にブレークポイントを持つことを望んでいた、私が降りたもの) - 私は "データの収集"タイムアウトに再び悩まされています。少なくとも2005年以来、同じポイントに上げ

が行われてきた数々の問題がいくつかは、いくつかのない固定しました。修正プログラムは、通常、私が持っている最新バージョンへのアップデートでした。

は私が修正したり、問題のこの家族を回避するために、に行くことができる一般的な方向はありますか?


EDIT:年後に問題がまだそこにある、バグが発生した後の開発者/サポートからの反応はまだありません。

+1

私は正確に同じ問題をencunteringよ。あなたは解決策または少なくとも説明を見つけましたか? – Josh

+4

残念ながら。私は開発者と一緒にチケットを開いたが、反応がなかった(別のチケットの別のチケットと同じ)。製品は素晴らしいですが、サポートは存在しません。 – WoJ

+1

私はKerasのLSTMネットワークにぴったり合っており、デバッガコンソールから 'model.predict'しようとするとこのナンセンスが得られます。私がフィードフォワードネットワークで同じことをしたときに起こることはありませんでした。デバッガ/コンソールにないときは、コードは実際にうまく動作します。奇妙で迷惑な。 – Josh

答えて

1

私は、これはあまりにも冗長であるデフォルトのメソッド__strの__()を持ついくつかのクラスによって引き起こされていることと思います。 Pycharmはこのメソッドを呼び出して、ブレークポイントにヒットしたときにローカル変数を表示し、その文字列をロードしている間にスタックを取得します。 これを克服するために使用するトリックは、エラーの原因となっているクラスを手動で編集し、__str __()メソッドをあまり冗長ではないものに置き換えることです。例として

、それは(とすべてのテンソルクラスがそれを拡張)pytorchの_TensorBaseクラスに発生し、そしてよう__str __()メソッドを変更すること、pytorchソーストーチ/ tensor.pyを編集することによって解決することができる。

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') 

最適から遠いが手に入る。

+0

これは良い情報ですが、私の場合は(クラスもなく)ハングしている自分のコードです。これは、主にマルチプロセスプログラムをデバッグするときに発生します。 – WoJ

関連する問題