findLineNum
位於 utils
包(package)。 說明
這些函數使用 keep.source = TRUE
解析代碼時保存的信息來定位包含特定源代碼行的對象。
用法
findLineNum(srcfile, line, nameonly = TRUE,
envir = parent.frame(), lastenv)
setBreakpoint(srcfile, line, nameonly = TRUE,
envir = parent.frame(), lastenv, verbose = TRUE,
tracer, print = FALSE, clear = FALSE, ...)
參數
srcfile |
包含源代碼的文件的名稱。 |
line |
文件內的行號。有關指定此選項的替代方法,請參閱詳細信息。 |
nameonly |
如果 |
envir |
我們從哪裏開始尋找函數對象? |
lastenv |
我們在哪裏停下來?查看詳細信息。 |
verbose |
我們應該打印有關斷點設置位置的信息嗎? |
tracer |
|
print |
要傳遞給 |
clear |
|
... |
要傳遞給 |
細節
findLineNum
函數搜索環境 envir
中的所有對象、其父對象、祖父母等,一直回到 lastenv
。
如果未指定envir
,則lastenv
默認為全局環境;如果指定envir
,則默認為根環境emptyenv()
。 (第一個默認值往往相當快,通常會找到除 S4 方法之外的所有用戶代碼;第二個默認值相當慢,因為它通常會搜索所有附加的係統庫。)
為了方便起見,可以間接指定envir
:如果它不是環境,則將其替換為environment(envir)
。
setBreakpoint
是 trace
和 untrace
的簡單包裝函數。它將在 findLineNum
找到的位置設置或清除斷點。
srcfile
通常是作為字符串輸入的文件名,但它可能是 "srcfile"
對象,或者可能包含類似 "filename.R#nn"
的後綴,在這種情況下,數字 nn
將用作默認值對於line
。
正如說明中所說明的where
手冊頁上的參數trace
, 這R包係統使用一種複雜的方案,可能在包中包含多個函數副本。用戶通常會在搜索路徑上看到公共路徑,而包中的代碼將在包命名空間中看到私有路徑。如果你設置envir
默認情況下,到包中函數的環境findLineNum
將找到兩個版本,並且setBreakpoint
將在兩者中設置斷點。 (這可以使用控製lastenv
;例如:,envir = environment(foo)
,lastenv = globalenv()
將僅找到私有副本,因為搜索在看到公共副本之前已停止。)
S 版本 4 的方法也很難找到。它們與通用函數一起存儲,該函數可能位於base
或其他包,所以通常需要有lastenv = emptyenv()
為了找到他們。在某些情況下,轉換是通過R存儲它們時以及findLineNum
可能找不到原始代碼。許多特殊情況,例如尚不支持原始泛型上的方法。
值
findLineNum
返回包含位置信息的對象列表。為它們定義了print
方法。
setBreakpoint
沒有有用的返回值;調用它是因為調用 trace
或 untrace
的副作用。
例子
## Not run:
# Find what function was defined in the file mysource.R at line 100:
findLineNum("mysource.R#100")
# Set a breakpoint in both copies of that function, assuming one is in the
# same namespace as myfunction and the other is on the search path
setBreakpoint("mysource.R#100", envir = myfunction)
## End(Not run)
作者
Duncan Murdoch
也可以看看
相關用法
- R findCRANmirror 查找 CRAN 鏡像首選項
- R file_test 對文件進行 Shell 式測試
- R fix 修複對象
- R file.edit 編輯一個或多個文件
- R format 設置無序列表和有序列表的格式
- R select.list 從列表中選擇項目
- R COMPILE 編譯用於 R 的文件
- R readRegistry 讀取 Windows 注冊表配置單元
- R browseVignettes 在 HTML 瀏覽器中列出暈影
- R hasName 檢查姓名
- R nsl 按主機名查找 IP 地址
- R edit 調用文本編輯器
- R create.post 準備電子郵件和帖子的輔助函數
- R hsearch-utils 幫助搜索實用程序
- R download.packages 從類似 CRAN 的存儲庫下載軟件包
- R DLL.version MS Windows 上的 DLL 版本信息
- R ls.str 列表對象及其結構
- R Rscript R 前端腳本
- R bug.report 發送錯誤報告
- R PkgUtils 用於構建和檢查附加包的實用程序
- R cite 引用參考書目條目
- R SweaveSyntConv 轉換 Sweave 語法
- R RSiteSearch 搜索文檔中的關鍵詞或短語
- R glob2rx 將通配符或通配符模式更改為正則表達式
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Find the Location of a Line of Source Code, or Set a Breakpoint There。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。