我正在调试R
使用该Rcpp
框架的库的 C++ 共享库 (DLL)。
我在 Windows 上并gdb
用于调试(通过 安装的版本Rtools
)。
我通过推荐的命令开始调试:
gdb Rgui.exe --silent
我的问题:似乎RGui
捕获了由Rcpp
和R
“打印”函数创建gdb
的所有输出stdout
并将其显示在RGui
R 控制台而不是gdb
控制台(终端)中:
(gdb) call dbg_print(df)
如何将输出“重定向”到gdb
控制台?
PS 1:我在 RGui 首选项中找不到此设置
PS 2:这是dbg_print
函数的代码:
void dbg_print(DataFrame df) {
Rcpp::print(df);
}
// Calls R's print function:
// inline void print(SEXP s) {
// Rf_PrintValue(s); // defined in Rinternals.h
// }
编辑1: Rgui.exe
没有为输出重定向提供明显的开关:
编辑 2:我很确定R 打印到标准输出
R 中的所有打印都是通过函数 Rprintf 和 REprintf [...]
Rprintf 写入标准输出。由 sink() 函数重定向,适用于普通输出。
REprintf 写入标准错误,对错误消息和警告很有用。它不是由 sink() 重定向的。
编辑 3: @duckmayr 向我指出了一个名为 R_WriteConsole 的 R 回调函数(在 C 中),该函数可用于注册我自己的打印例程以将 R 输出重定向到gdb
控制台(stdout)。我正在寻找更多这样的示例代码......