質問: vscodeでpdbの挙動を調べるのに以下のようなコードをつかって、遊んでいました。 下から二行目のprint("start")にブレークポイントをもってきてスタートさせ、 step intoで進んでいきます。 a=100のあと、print(a)にカーソルが来たときに、 GUI操作で、a=1000とすると、いったんは、数字が更新されますが、すぐに100に戻ってしまいます。(更新されていない?) そもそもDEBUG CONSOLEからだと、グローバル変数を更新できません。 pdbにおいて、関数内において、DEBUG CONSOLEなどを使って、グローバル変数に値を入力したり、更新する方法はあるのでしょうか? ``` def main(): global a a=100 print(a) func1() def func1(): b=200 print(b) func2() def func2(): c=300 print(c) func3() def func3(): d=400 print(d) print("start") main() ```
回答: `main()` の中の `print` にさしかかったときに、デバッグコンソールから `global a;a=1000` としても反映されませんし、単にVARIABLES枠で `a:100⇛1000` に修正しても、`print` 関数のアウトプットには反映されません。 CALL STACK枠で、対象となるスタックフレーム(今回のように関数の階層になっている場合どのレベルにいるか、グローバル変数なら一番外。)に変更してから上記を入力する必要があります。 !画像の説明をここに入力