激活库的调试

Activate debug for a library

本文关键字:调试 激活      更新时间:2023-10-16

我用C++编写了一个程序,该程序使用beaglebone的prussdrv库(http://processors.wiki.ti.com/index.php/PRU_Linux_Application_Loader_API_Guide),在我的代码中导入prussdrv.h,这样我就可以使用它定义的所有函数。

然而,有些函数调用返回-1,我想知道确切的问题。查看源代码(https://github.com/beagleboard/am335x_pru_package/blob/master/pru_sw/app_loader/interface/prussdrv.c)我发现有很多调用在返回-1:时将某些内容打印到stderr

if (fPtr == NULL) {
DEBUG_PRINTF("File %s open failedn", filename);
return -1;
} else {
DEBUG_PRINTF("File %s open passedn", filename);
}

这些DEBUG_PRINTF语句可以通过定义__DEBUG宏用PRINTF替换:

#ifdef __DEBUG
#define DEBUG_PRINTF(FORMAT, ...) fprintf(stderr, FORMAT, ## __VA_ARGS__)
#else
#define DEBUG_PRINTF(FORMAT, ...)
#endif

但是,目前还不清楚如何定义它来启用调试。我尝试使用-D_DEBUG标志编译代码,但没有成功。应该这样吗?如果我在机器中搜索源文件并更改它,只留下#define,它会起作用吗?为导入的库启用调试的正确方法是什么?非常感谢。

如果您想激活库的调试打印,您必须使用-D__DEBUG编译它,然后将代码与库的调试版本链接。

换句话说,您应该使用此标志编译,而不是您的代码。然后您将拥有这个库的两个版本:生产版本和调试版本。喜欢不同库版本的代码会导致不同的行为。