Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4232940
  • 博文数量: 447
  • 博客积分: 1241
  • 博客等级: 中尉
  • 技术积分: 5786
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-27 06:48
个人简介

读好书,交益友

文章分类

全部博文(447)

文章存档

2024年(1)

2023年(5)

2022年(29)

2021年(49)

2020年(16)

2019年(15)

2018年(23)

2017年(67)

2016年(42)

2015年(51)

2014年(57)

2013年(52)

2012年(35)

2011年(5)

分类: WINDOWS

2012-05-21 17:55:21

最近使用_FILE_输出debug信息,发现程序的debug版本没有任何问题,release版本问题必现。和桂杰讨论后确认是编译选项的问题,但是无法确定是哪一项出了问题。
编译带pdb的release版本后,使用windbg开始了漫漫的调试路程,最终发现是输出日志时,_FILE_没有打印完整的路径,只打印了文件名,导致 _tcsrchr(lpszSourceFile, _T('\\')) + 1;
这样代码出错,桂杰反馈出是FC没有设置,
The name of the current source file. __FILE__ expands to a string surrounded by double quotation marks. To ensure that the full path to the file is displayed, use /FC (Full Path of Source Code File in Diagnostics).
但是为什么debug木有问题呢?
原因如此,Debug模式下,visual c++的编译器cl.exe会设置一个/ZI的选项,由于/ZI选项包含了/FC选项,这个选项会让代码中的__FILE__扩展成一个绝对路径的文件名,注意不是release的/Zi,这个选项让__FILE__为相对路径。
建议还是设置这个选项,如果只要文件名如何做呢?
使用#define THIS_FILE ( _tcsrchr(_T(__FILE__), _T('\\')) ? _tcsrchr(_T(__FILE__), _T('\\')) : _T(__FILE__)) 就可以了。
阅读(4293) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~