激活库的调试
Activate debug for a library
我用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
编译它,然后将代码与库的调试版本链接。
换句话说,您应该使用此标志编译库,而不是您的代码。然后您将拥有这个库的两个版本:生产版本和调试版本。喜欢不同库版本的代码会导致不同的行为。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 在linux上调试巨大的C++项目
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 正在VS调试器中监视映射条目
- 使用调试/崩溃报告将应用程序部署到客户端
- VC++本机单元测试,找不到调试符号
- 如何在C++生成器中禁用"使用调试.dcus"
- 使用vscode调试时,GDB意外退出
- 即使使用调试编译标志,表达式也是"optimized out"
- 调试 CUDA MMU 故障
- 小字符串优化(调试与发布模式)
- 调试和自由执行中的信号处理
- 调试编译的服务器在数据库打开时崩溃
- Visual Studio 调试优化如何工作?
- 如何配置Visual Studio Code以使用cygwin,cmake和gcc进行调试
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- Visual Studio Code - 在调试之前激活环境
- 激活库的调试
- 调试Android Native C++:激活断点