最近, 我花了半天时间改的代码, 别的同事携带发布后, 我发现我的修改并没有生效, 很纳闷。
难道, 我要去check一下我的代码逻辑吗? 在测试环境上测试, 明明是没有问题的啊, 怎么发布后就不生效呢? 于是, 我怀疑, 可能是发布的时候, 并没有真正携带上我的修改。 最后的结论是: 别的同事没有编译我修改的基础库, 导致确实没有携带我的修改。
怎么发现的呢? 我写代码有个习惯, 会在打印log时, 携带上标记。 如果修改的代码确实不需要打印log, 那就在代码文件的已有打印log的地方, 加个感叹号之类的东西, 作为标记区分, 最后编译出来的二进制文件是否携带这个感叹号, 就可以确定是否携带了我的修改。
举个例子, 原来的log是:
printf("connect error, iRet is %d\n", iRet);
我会把它改成:
printf("connect error! iRet is %d\n", iRet);
这样, 可以利用strings命令来扫最后的二进制文件, 通过,和!的区分, 就能识别出来。
当然, 如果我修改的代码本身就有log, 就不需要这么搞了, 自身的log就是一种标记, 可以用string命令来区分。
如果有疑问, 请参考:http://blog.youkuaiyun.com/stpeace/article/details/50077677 《再次唠叨linux中的strings命令》