2

pydev (最新バージョン) を使用していますが、デバッガーが機能しなくなりました (具体的にはブレークポイントが機能しません)。奇妙なエラーが発生します:

pydev デバッガー: トレースバックの開始 (最新の呼び出しが最後):

それ以上のテキストはありません。...

私はスタックレス python 2.7 と pyside (ほぼ最新バージョン) を使用しています。機能していないブレークポイントは、スタックレス タスクレット内にありません。

原因や解決策をご存知の方はいらっしゃいませんか?

OK、(少し恥ずかしい)私は過去に同様の問題を抱えており、ここに投稿し、ここで広範なヘルプを得ました

その投稿を使用して、この方法の問題を特定しました。

def __getattr__(self, name):
    if name in self._code_:
        func = self.getfunction(name)
        setattr(self, name, func)
        return func 
    else:
        return super(AtomicProcess, self).__getattr__(name)

これまたは同様の方法を使用して、可能な限り最新の時間 (呼び出されたとき) に属性を設定したいと思います。おそらく問題を修正するためにスーパー コールを追加しましたが、ダイスはありません。

  • この方法で問題が発生する原因を知っている人はいますか?
  • 遅い初期化を達成するがpydevの問題を回避する修正を誰かが持っていますか?

また、コードは問題なく実行されますが、デバッガーは上記のメソッドで無限再帰に入るように見え、このメソッドの後にブレークポイントを回復して無視することにも言及する必要があります。

乾杯、ラース

PS: 誰か?pydev開発者はstackoverflowに従っていますか、それとも私が試すことができる別の場所はありますか?

4

1 に答える 1

1

何がわからないのですが、前号と同じようです(コードを渡せば見ることができますが、それがなければ、最後のスレッドを指すだけです) 。

再帰例外がある場合、これはPythonデバッグ機能を壊すものであることに注意してください...その間に回避策としてできることは、リモートデバッガーを使用してそれを改善することです。

私は予感があります:私の推測では、あなたは__getattr__再び呼び出している「自己」の何かにアクセスします...(これは再帰を生成し、デバッガーを壊します)。

もう1つの考えられること::で'super'イディオムを使用する代わりにsuper(AtomicProcess, self).__getattr__(name)、スーパークラスを直接使用します:Superclass.__getattr__(self, name)..。

乾杯、

ファビオ

于 2012-10-18T16:58:58.863 に答える