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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。