

vscodeでpdbの挙動を調べるのに以下のようなコードをつかって、遊んでいました。  
下から二行目のprint("start")にブレークポイントをもってきてスタートさせ、  
step intoで進んでいきます。  
a=100のあと、print(a)にカーソルが来たときに、  
GUI操作で、a=1000とすると、いったんは、数字が更新されますが、すぐに100に戻ってしまいます。（更新されていない？）  
そもそもDEBUG CONSOLEからだと、グローバル変数を更新できません。  
pdbにおいて、関数内において、DEBUG CONSOLEなどを使って、グローバル変数に値を入力したり、更新する方法はあるのでしょうか？

[code]

    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()
    
    
[/code]


CC BY-SA 4.0
2021-06-15T12:29:11.040
77582
2021-06-23T00:10:16.737
40961
question
python
pythonのデバッガー（pdb）において、関数スコープ内でglobal変数をいじっても、維持されませんか？


`main()` の中の `print` にさしかかったときに、デバッグコンソールから `global a;a=1000`
としても反映されませんし、単にVARIABLES枠で `a:100⇛1000` に修正しても、`print` 関数のアウトプットには反映されません。

CALL
STACK枠で、対象となるスタックフレーム（今回のように関数の階層になっている場合どのレベルにいるか、グローバル変数なら一番外。）に変更してから上記を入力する必要があります。

[![画像の説明をここに入力](https://i.stack.imgur.com/HjevY.jpg)](https://i.stack.imgur.com/HjevY.jpg)


CC BY-SA 4.0
2021-06-17T11:08:09.530
77629
2021-06-23T00:10:16.737
2021-06-23T00:10:16.737
3060
40961
77582
answer