當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R debug 調試函數


R語言 debug 位於 base 包(package)。

說明

設置、取消設置或查詢函數的調試標誌。 textcondition 參數與通過調用 browser 提供的參數相同。一旦進入瀏覽器,用戶就可以檢索它們,並提供一種機製來允許用戶識別哪個斷點已被激活。

用法

debug(fun, text = "", condition = NULL, signature = NULL)
debugonce(fun, text = "", condition = NULL, signature = NULL)
undebug(fun, signature = NULL)
isdebugged(fun, signature = NULL)
debuggingState(on = NULL)

參數

fun

任何解釋的R函數。

text

輸入瀏覽器時可以檢索的文本字符串。

condition

輸入瀏覽器時可以檢索的條件。

signature

可選的方法簽名。如果指定,則將調試該方法,而不是其泛型。

on

邏輯性;如果全局打開調試,則對支持函數 debuggingState 的調用將返回 TRUE,否則返回 FALSE。這些值中的一個或另一個的參數設置狀態。如果調試狀態為 FALSE ,則不會發生任何調試操作(但函數中的顯式 browser 調用將繼續工作)。

細節

當進入一個標記為調試的函數時,正常執行將被暫停,函數體一次執行一個語句。每個步驟都會啟動一個新的 browser 上下文(並且前一個步驟會被銷毀)。

在調試提示符下,用戶可以輸入命令或R表達式,後跟換行符。這些命令的說明見browser幫助主題。

要調試在另一個函數內定義的函數,請從 single-step 一直到其定義的末尾,然後在其名稱上調用 debug

如果要調試不是從頭開始的函數,請使用 trace(..., at = *)setBreakpoint

使用 debug 是持久的,除非關閉調試,否則每次調用都會進入調試器(請注意,如果刪除並替換該函數,則不會保留調試狀態)。僅在下次調用該函數時才使用debugonce() 進入調試器。

要通過顯式簽名調試 S4 方法,請使用 signature 。當指定時,簽名指示要調試的fun的方法。請注意,在這種情況下,調試的實現方式略有不同,因為它使用跟蹤機製,而不是調試位。因此,textcondition 不能與非空 signature 組合指定。對於實現 .local 重新匹配機製的方法,.local 閉包本身是最終要調試的閉包(請參閱 isRematched )。

isdebugged 返回 TRUE,如果 a) signatureNULL 並且閉包 fun 已被調試,或者 b) signature 不是 NULLfun 是 S4 泛型,並且該方法該簽名的 fun 已被調試。在所有其他情況下,它返回 FALSE

當輸入函數進行調試時,可以通過設置 options(deparse.max.lines) 來限製為解析調用打印的行數。

當在字節編譯函數上啟用調試時,將使用該函數的解釋版本,直到禁用調試為止。

debugundebug 無形地返回 NULL

如果函數或方法是,isdebugged 返回TRUE

標記為調試,否則標記為FALSE

例子

## Not run: 
debug(library)
library(methods)

## End(Not run)
## Not run: 
debugonce(sample)
## only the first call will be debugged
sampe(10, 1)
sample(10, 1)

## End(Not run)

也可以看看

debugcall 用於方便的調試方法,browser 尤其是其 ‘commands’、tracetraceback 查看 Error: ... 消息後的堆棧; recover 另一種調試方法。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Debug a Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。