我正在尝试使用 gdb 以与视频中指定的方式相同的方式调试 R 包中的编译代码:https://vimeo.com/11937905 https://vimeo.com/11937905 and 编写 R 扩展 https://cran.r-project.org/doc/manuals/r-release/R-exts.pdf第 4.4 节。
这些消息来源说使用命令R -d gdb
然而,每当我尝试这样做时,我都会收到一条消息说WARNING: unknown option '-d'
R在正常情况下启动。
为什么 R 无法识别 -d 标志?我使用的是 Windows 10。
正如@MatthewLueder 自己最终发现的那样在 Windows 上的调试不像在 Linux 上那样工作.
中描述了操作方法R for Windows 常见问题解答 https://cran.r-project.org/bin/windows/base/rw-FAQ.html#How-do-I-debug-code-that-I-have-compiled-and-dyn_002eload_002ded_003f
失踪的主要原因-d
论证中R
似乎是这样Windows 无法向进程发送信号来中断执行并将控制权传递给 (gdb
) 调试器:
- 如果不中断 R,则无法设置断点。
- 如果不将 R 启动到 R 控制台,您就无法加载要调试的库(不会弄脏您的双手)。
因此,Windows 上的 R 提供了一种解决方法,使用RGui
代替R
:
gdb /path/to/R-3.x.x/bin/x64/Rgui.exe
(gdb) run
启动后RGui
您处于 R shell 中并且可以加载您的包
包含要调试的 DLL。
要设置断点进行调试,您可以中断 R 以闯入调试器通过一个菜单项,该菜单项仅在以下情况下可见RGui
开始于gdb
:
现在您可以通过以下方式在代码中设置断点b a_function_name
, enter c
要继续 R,请调用 R 中的函数,瞧:gdb
显示断点命中和
您可以调试(单步执行代码并打印变量值)。
PS:我目前正在开发一个R包来改进R包中C++代码的调试,因为查看R变量的当前值或Rcpp
中的数据类型gdb
: https://github.com/aryoda/R_CppDebugHelper https://github.com/aryoda/R_CppDebugHelper
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)