一直想对alljoyn相关代码进行源代码级调试,但不知怎么的老是进不了源代码,今天再次尝试,可以了
其实也很简单,用VS将ajtcl-14.02的所有c文件载入,包括src,crypto,malloc,target\win32里面所有的c文件,因为我所有将之编译成统一的静态库。设置好头文件路径后,就可直接编译了。很快就在与sln文件同目录下的Debug下有了静态库ajtcl.lib,大小有1.11MB
接着随便在samples下找个源程序,比如basic_service.c,新建一个项目工程(原来的可以关了),将它加入。当然,设置好头文件路径及静态库路径,就可以编译了。在AJ_Initialize()旁设置断点,点击F5,待调试指针指向那一行时,单步即可进入aj_init.c文件中的AJ_Initialize()函数了。
其实我之后检验了下,就是要保证以下两点:
1、主程序项目的Debug目录下的pdb文件不能删,删了就无法调试;要想进入ajtcl源代码内部,则其项目的Debug下的vc110.pdb不能删
2、库项目的源码路径不能变动
同时c++版的alljoyn也可如此,不过感觉要麻烦些,像ajtcl一样统一生成一个静态库好像不太好,毕竟用scons生成的库就有alljoyn.lib,ajrouter.lib,BundledRouter.obj等,得确知哪个目标需要哪些cc文件。不知scons能否直接帮忙生成sln文件,如果能那就方便多了。