如何调试C和R之间使用的tcl/tk代码

如何调试C和R之间使用的tcl/tk代码,tcl,tk,Tcl,Tk,我得到了一个使用C、tcl/tk和R代码的程序。tcl/tk在C和R代码中都是交错的。Tcl/tk可以说在R和C代码之间建立了一座桥梁。C代码生成一个.dll,然后用于R中调用的函数。不过,该程序有一些bug,我想尝试调试它。但是,在C代码中添加打印语句之类的内容不会出现在R或C输出中。有没有一种方法可以使用tcl/tk实现用C语言在R中完成的调试结果?我不清楚这里的控制流程。是调用Tcl过程的R函数反过来调用C代码吗?此外,向C代码中添加打印语句(打印到标准输出中)确实会在某些地方出现,因此我

我得到了一个使用C、tcl/tk和R代码的程序。tcl/tk在C和R代码中都是交错的。Tcl/tk可以说在R和C代码之间建立了一座桥梁。C代码生成一个.dll,然后用于R中调用的函数。不过,该程序有一些bug,我想尝试调试它。但是,在C代码中添加打印语句之类的内容不会出现在R或C输出中。有没有一种方法可以使用tcl/tk实现用C语言在R中完成的调试结果?

我不清楚这里的控制流程。是调用Tcl过程的R函数反过来调用C代码吗?此外,向C代码中添加打印语句(打印到标准输出中)确实会在某些地方出现,因此我不确定“实现调试结果”意味着什么。也许你可以再解释一点。我只是想在前言中说,我是一名本科生,刚刚被抛到了这个话题上。我对C不太了解。是的,R中的Tcl包和C中的
Tcl.h
都在使用。我没有看到C代码的任何输出,因为没有使用
main
函数。在visual studio中运行“本地Windows调试器”后,它将成功生成,但声明.dll不是有效的win32应用程序。所以我看不到任何输出。你似乎在泳池的最深处着陆了。三种语言的整合无疑是一个棘手的问题。调试它将取决于这里没有的特定代码细节。当您继续探索程序如何工作时,可能会出现更具体的问题,您可以为这些问题提供明确的代码序列,这些问题可以在这里得到回答。在某些地方会有一个主要问题,但可能没有帮助。相反,关注信息在语言之间传递的位置。这些边界是理解各个部分彼此之间的API的关键位置。在C代码中似乎做了大量工作的一段代码是
#define TCL_CMD(name)int name(ClientData ClientData,TCL_Interp*Interp,int objc,TCL_Obj*const objv[])
objv
似乎是在R函数中传递的参数,然后使用此
TCL\u CMD
方法将这些参数读入C代码。稍后我可以提供更多细节。我希望这对这些语言如何相互交流有所帮助。