我正在尝试使用 gdb 以与视频中指定的相同方式调试 R 包中的编译代码:https : //vimeo.com/11937905和编写 R 扩展第 4.4 节。
这些消息来源说R -d gdb在启动 R 时使用该命令
。但是,每当我尝试这样做时,我都会收到一条消息,说WARNING: unknown option '-d'R 在正常情况下启动。为什么 R 不识别 -d 标志?我正在使用 Windows 10。
@MatthewLueder 发现自己最终在 Windows 上进行调试并不像在 Linux 上那样工作。
\n\nR for Windows 常见问题解答中描述了操作方法
\n\n-d缺少参数的主要原因R似乎是 Windows 无法向进程发送信号来中断执行并将控制权传递给 ( gdb) 调试器:
因此,Windows 上的 R 提供了一种解决方法,使用RGui而不是R:
gdb /path/to/R-3.x.x/bin/x64/Rgui.exe\n(gdb) run\nRun Code Online (Sandbox Code Playgroud)\n\n启动后,RGui您将进入 R shell,并且可以加载\n包含要调试的 DLL 的包。
要设置调试断点,您可以中断 R,通过菜单项进入调试器RGui,该菜单项仅在使用以下命令启动时才可见gdb:
现在,您可以通过在代码中设置断点b a_function_name,输入c继续 R,调用 R 中的函数,然后 voil\xc3\xa0:gdb显示断点命中,\n您可以进行调试(单步执行代码并打印变量值)。
PS:我目前正在开发一个 R 包来改进 R 包中 C++ 代码的调试,因为Rcpp在以下位置查看 R 变量或数据类型的当前值相当困难gdb: https: //github.com/aryoda/R_CppDebugHelper