Basic
debug in code – print 大法
print.
延伸 – f-string format
print(f"{target=}")
可以輸出 target=<traget實際值>
debug with IDE – VScode debugger
debugger, variable, watch, call stack 都看
debug with IDE – VScode 中斷點
中斷點
Advanced
Advanced – try except
try:
pass
except:
print("stop")
下中斷點於 gotcha, 當 pass 會經過很多輪時非常好用.
Advanced – magic (dunder) methods
改天會在寫 magic (dunder) methods 是什麼
註:dunder = double under
print(f"[{__class__}]{a=}")
在超級多檔案時,可以快速定位「哪個檔案 -> class」,超好用
至於我也想定位到 function,但目前好像沒有簡單的方法…
另外 _ _ name _ _ 、 _ _ qualname _ _ 有時候 debug 也好用。
只想要找檔案不想要找 class name (比較短),就用 name,
qualname 雖然可以顯示 function name,但他的 object 要是 function…
例如 obj.qualname (自行補上雙底線),我覺得有點不是那麼方便,
畢竟這樣我早就知道他的 function name 了,還需要問嗎…
Advanced – conditional 中斷點
於中斷點按右鍵,可設定條件式
Tools
Tools – logger
待補
Tools – file dump
當資訊過多導致 debugger 跑不太動時,直接存到檔案內
def dump_debug_str(data, filename):
print(f"saving {filename} with data...")
with open(filename, "w") as f_write:
f_write.write(str(data))