[英]How to configure VScode to debugg multithreaded application as in winpdb?
[英]How to debugg iterative procedures?
我將Racket博士和Racket博士用於教育目的(研究SICP書)。 Racket博士很棒,並且有一個很棒的工具叫做“ trace”。
使用后:
(require trace/racket)
(trace function)
可以看到遞歸過程中發生了什么。
但是,此功能不適用於迭代過程。 我希望我可以“看到”我的代碼在執行時發生了什么。 我希望我能看到狀態變量值的變化。
是否有其他工具或做法可以在迭代過程中獲得此類信息?
跟蹤不是調試。 在DrRacket中,您可以按DEBUG按鈕並右鍵單擊感興趣的部分的邊緣,例如, if
它確定了助手中的基本情況或解除情況,然后選擇“此時暫停”。 然后,每當您按下Go時,您就可以一次看到綁定的參數。
如果您只想跟蹤,可以像這樣跟蹤一個助手:
(require racket/trace)
(define (reverse lst)
(define (aux lst acc)
(if (null? lst)
acc
(aux (cdr lst)
(cons (car lst) acc))))
(trace aux) ; tracing the helper
(aux lst '()))
(reverse '(1 2 3 4))
>(aux '(1 2 3 4) '())
>(aux '(2 3 4) '(1))
>(aux '(3 4) '(2 1))
>(aux '(4) '(3 2 1))
>(aux '() '(4 3 2 1))
<'(4 3 2 1)
;==> (4 3 2 1)
如果你想使用一個名為let
剛,取而代之的是trace-let
:
(define (reverse lst)
;; TODO: Put back to let
(trace-let aux ((lst lst) (acc '()))
(if (null? lst)
acc
(aux (cdr lst)
(cons (car lst) acc)))))
使用調試器比必須添加行並刪除代碼中的行以進行測試要快得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.