CSR867x学习笔记:查看库文件运行时debug信息

原创 2018年04月17日 21:14:42

写在最前面:

很多读者反馈希望可以有硬件平台配合学习。现与思度科技联合推出CSR867x学习板【淘宝链接:思度科技CSR867x学习板】,进QQ群获取激活码购买学习板享受如下优惠:
1. 价格优惠
2. 免费提供开发教程和项目源码
3. 免费提供入门级技术支持

QQ群号:743434463

——————————正文分割线———————————–

1. 引言

今天有群友问到如何查看库文件运行log。先给这位群友的好学点赞。

查看库文件运行log可以有针对性地了解特定功能块的代码执行情况,是快速学习和理解代码的好方法。

2. 查看方法

以ADK的source工程举例。默认情况下看不到C:\ADK4.0.0\src\lib\a2dp\a2dp_api.c的运行log:

void a2dpSignallingConnectInd (remote_device *device)
{
    MAKE_A2DP_MESSAGE(A2DP_SIGNALLING_CONNECT_IND);

    PRINT(("a2dpSignallingConnectInd"));

    message->device_id = findDeviceId(device);

    if (device != NULL)
    {
        message->addr = device->bd_addr;
    }
    else
    {
        BdaddrSetZero(&message->addr);
    }

    MessageSend(a2dp->clientTask, A2DP_SIGNALLING_CONNECT_IND, message);
}

打开source的VM工程的properties界面:
这里写图片描述
可以看到Libraries栏里有很多库文件名,这些库文件都保存在ADK的.\tools\lib\BlueLab-7.0.1-Release\assisted路径,如下:
这里写图片描述
细心的读者可能已经发现了,在properties里的库文件是没有lib前缀的,而上述路径下的库文件都是有前缀的。我想可能是xIDE耍的小花招吧。

新的问题是,这些.a文件是怎么来的呢?以liba2dp.a和liba2dp_debug.a为例,他们对应的源码在路径为C:\ADK4.0.0\src\lib\a2dp的文件夹中。进入此文件夹,用notepad++等文本阅读工具打开VARIANTS文件,可以看到如下内容:

VARIANTS := 12 debug

CFLAGS_12 := -DA2DP_1_2 # Define A2DP V1.2 (default V1.3)

CFLAGS_single_slot := -DSINGLE_MEM_SLOT  # flag for building standard version of A2DP lib that uses a single memory slot for internal data storage

CFLAGS_debug := -DA2DP_DEBUG_LIB  # flags for building debug version of A2DP lib

CFLAGS_single_slot_debug := -DSINGLE_MEM_SLOT -DA2DP_DEBUG_LIB  # Single memory slot and debug

CFLAGS_atrac := -DINCLUDE_ATRAC  # flags for building ATRAC version of A2DP lib

CFLAGS_sbc_only := -DA2DP_SBC_ONLY  # flags for building an SBC only version of A2DP lib

可以看到第一行的VARIANTS后面有12、debug这两个名称。第2、4行分别是这两个名称对应的编译选项。当你修改了a2dp路径下的源码并运行开始菜单->ADK->Rebuild->VM libraries后,新的liba2dp.a、liba2dp_debug.a、liba2dp_12.a会生成在上述库文件的路径中。

如果你想查看a2dp库的运行log,可以简单地将properties中的a2dp修改为a2dp_debug,如下:
这里写图片描述

修改完成后进入调试模式,即可在printf 0窗口中打印出此库文件中包含的log信息。

同样的,每个库文件夹下的debug信息都可以用这种方法,即使没有VARIANTS文件,也可以依葫芦画瓢自己创建一个。

3. 总结

一些注意点:

  • 受限于CSR867x的const区只有24KB,不能一次性包含多个后缀为_debug的库文件,否则工程会编译失败。
  • 工程包含_debug.a库文件后,程序只能运行在调试模式,否则无法正常开机。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzz4420381/article/details/79980963

CSR867x学习笔记:查看库文件运行时debug信息

写在最前面: 很多读者反馈希望可以有硬件平台配合学习。现与思度科技联合推出CSR867x学习板【淘宝链接:思度科技CSR867x学习板】,进QQ群获取激活码购买学习板享受如下优惠: 1. 价格优...
  • wzz4420381
  • wzz4420381
  • 2018-04-17 21:14:42
  • 24

Android底层库打印调试信息到logcat中查看

1、最简单的方式 使用NDK
  • lynchyo
  • lynchyo
  • 2014-11-25 12:00:10
  • 1864

iOS开发 - Xcode的Debug中查看数据细节的方法

众所周知,在Xcode中的IDE环境中编译和调试程序十分方便,我们在某行代码中设置好断点,当程序执行到该处时,只需要将鼠标放到代码段中的字符串等变量名上面,Xcode就能显示出变量的内容。但如果是一些...
  • a910577347
  • a910577347
  • 2017-03-08 18:05:24
  • 474

使用eclipse查看堆栈分配

这篇文章源于同事问我说: String str1 = "abc"; String str2 = "abc"; String str3 = new String("abc"); str1 == ...
  • hello_yz
  • hello_yz
  • 2014-09-03 11:02:56
  • 3122

怎么查看so库文件中的函数

在shell命令行: 1、nm -D xxx.so 2、readelf -s xxx.so 3、objump -tT xxx.so
  • ngyzqf
  • ngyzqf
  • 2015-10-26 14:26:47
  • 572

写入调试信息

今天在看关于 一位朋友vista声音驱动时候观察到 写入调试信息为 "核心内存转储"所以找了MS KB的内容看了看知识库内容screen.width*0.7) {this.resized=true; ...
  • zglloo
  • zglloo
  • 2007-05-26 22:43:00
  • 3564

DebugView调试工具

  • 2012年03月19日 15:46
  • 159KB
  • 下载

Linux下查看.so和可执行文件是否debug编译

今天同事问我, 如何判断一个.so是否是debug编译的. 我记得以前自己是用file来查看一个.so, 根据是否包含"not stripped"来判断该.so是否是debug编译的, 于是就没...
  • gong_xucheng
  • gong_xucheng
  • 2014-04-18 09:47:41
  • 3884

查看trace文件信息

if exists(select * from sysobjects where xtype=P and name=up_dircmd)drop procedure up_dircmdgoCREATE...
  • summerain
  • summerain
  • 2006-01-25 09:47:00
  • 996

如何查看程序所需的库文件

上次调试一个程序。程序在使用dlopen()出现错误。错误信息是加载动态库时,动态库中有未定义的符号。明明知道是动态库的问题,可是自己找了半天,没解决问题。张博士过来,一个ldd查看一下动态库就判断库...
  • dongliqiang2006
  • dongliqiang2006
  • 2010-08-25 21:32:00
  • 1259
收藏助手
不良信息举报
您举报文章:CSR867x学习笔记:查看库文件运行时debug信息
举报原因:
原因补充:

(最多只允许输入30个字)