当前位置: 首页 > news >正文

奇怪的程序编译时间

 

        前两天外网版本和发布版本对应不上了,导致外网有大量崩溃。由于上传人员的失误,紧急补丁尽然没有pdb,没有pdb文件的话就没法调试dump文件找到问题所在。还好后来找到了以前备份的pdb,勉强找到了问题所在,确定是外网版本问题。问题找到了,一切都好办了,可是奇怪的事情发生了。

内网发布版本运行显示时间和发布时间差一天,程序发布时间是5.11日。可编译时间显示是5.10号,这就不对了。按理说这两个时间该是一样的啊,开始我也在想这个问题。没想明白,周末休息,突然想到我忽略一个问题。这个编译时间怎么来的?发布时间是通过文件修改时间确定的,这个编译时间不是系统自带的功能。看了下代码,发现原来编译时间是写在main函数里的一个c stand 宏。先看看这两个神奇的宏:

Macro  __DATE__       

DescriptionThe compilation date of the current source file. The date is a string literal of the form Mmm dd yyyy. The month name Mmm is the same as for datesgenerated by the library function asctime declared in TIME.H.

Macro  __TIME__

DescriptionThe most recent compilation time of the current source file. The time is a string literal of the form hh:mm:ss.      

原来这两个宏记录的是当前文件编译的时间,注意是当前文件而不是当前工程。这就知道原因了,由于当时打紧急补丁,我修改完程序后,没有rebuild。所以main函数所在文件没有被重新编译过。自然打印出来的时间是此文件最有一次编译的时间。所以和文件修改时间对应不上了。看似很怪异的问题,真相大白后,问题还是很简单的。还有以后发布版本,或者遇到比较奇怪的问题,建议rebuild下,有时很难缠的问题可能就解决了。并不是说我在瞎试,这也是一种解决问题的途径,我们在解决问题时不一定要多高明的办法,把问题解决了就行。

       C stand有很多非常有意思并且有用的宏,比如说__FILE__,__LINE__。有兴趣的同学可以看看。最后要说的是在以后思考解决问题的时候,要多从软件整体去思考问题,站在软件整体流程和运作原理上,先总体后局部的思想。前面部分说的是对问题的描述和解决方案,后面纯属我的浅见,希望大家多多指教和交流。

 

转载于:https://www.cnblogs.com/fengju/archive/2011/05/24/6174346.html

相关文章:

  • 无疆_炎戎的博文导航
  • Unix哲学
  • 10245
  • 学习Linq的网站
  • Cglib的使用方法(4)--BeanCopier
  • 代码意识流——花朵数问题(八)
  • NHibernate 学习第三天 Web.config 的配置
  • 使用BIOS进行键盘输入和磁盘读写03 - 零基础入门学习汇编语言77(完)
  • MFC中的窗口绘图问题
  • 【转载】Linux下进程的建立
  • SQL SERVER2005几个性能优化综述
  • windows phone7 mango 多人在线游戏
  • ISAG短信上下行的纠结
  • ASP.NET MVC3书店--第三节 视图与视图模型(转)
  • ASP.NET Session丢失问题原因及解决方案
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【mysql】环境安装、服务启动、密码设置
  • Android框架之Volley
  • Android组件 - 收藏集 - 掘金
  • CAP 一致性协议及应用解析
  • Docker容器管理
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • JavaScript异步流程控制的前世今生
  • java多线程
  • nginx 负载服务器优化
  • Twitter赢在开放,三年创造奇迹
  • vue数据传递--我有特殊的实现技巧
  • 和 || 运算
  • 记一次删除Git记录中的大文件的过程
  • 每天10道Java面试题,跟我走,offer有!
  • 手机端车牌号码键盘的vue组件
  • 容器镜像
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​flutter 代码混淆
  • ​ubuntu下安装kvm虚拟机
  • #stm32整理(一)flash读写
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (windows2012共享文件夹和防火墙设置
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (七)理解angular中的module和injector,即依赖注入
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转) Face-Resources
  • (转)EOS中账户、钱包和密钥的关系
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .aanva
  • .net mvc 获取url中controller和action
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)