sid*_*ect 15 c++ cmake visual-studio
我认为我理解Release和Debug构建模式之间的区别.主要区别在于,在调试模式下,生成的可执行文件未进行优化(因为这可能使调试更加困难)并且包含调试符号.
在构建PCRE(WinMerge的外部依赖项之一)时,我注意到了之前没有见过的构建模式:RelWithDebInfo.
Debug和RelWithDebInfo之间的区别在这里提到:http://www.cmake.org/pipermail/cmake/2001-October/002479.html .exerpt:"RelwithDebInfo非常类似于Release模式.它生成完全优化的代码,但也构建程序数据库,并插入调试行信息,以便调试人员有机会随时猜测代码中的位置."
这听起来是一个非常好的主意,但不一定明显如何设置.此链接描述了如何为VC++启用此功能:http://www.cygnus-software.com/papers/release_debugging.html
我错过了什么,或者将所有发布代码编译为RelWithDebInfo没有意义?
Kim*_*man 19
就我而言,在调试生产问题时,向客户发送代码而没有内部存储的相应调试符号是一种脱发的方法.
使用调试符号调试版本构建与调试构建调试很少有任何不同,所以我建议总是这样做.
也就是说,我不知道是否有任何弊端.如果是这样的话,听到它会很有趣.
我错过了什么,或者将所有发布代码编译为RelWithDebInfo没有意义?
这取决于您对调试信息的信任程度.
附加信息:
gcc将调试信息编码到目标代码中.
这是gcc的pdb等价物:
请注意,cmake似乎不支持这种开箱即用的方法.
一旦您尝试调试优化的发布版本,就会知道为什么这是您只有在没有其他出路时才想做的事情.
基本上,我会看到两种情况,你需要这个:
我不了解你,但在过去的十年中,我不得不两次或三次调试发布代码,并设法在客户崩溃的公司工作没有问题.
是的,为你的发布版本提供调试信息也许是一个好主意,但VS并没有这样设置,对于你需要的每个十年中的两个案例,不值得每次手动设置时间.由于CMake免费提供,所以做到了.
| 归档时间: |
|
| 查看次数: |
32275 次 |
| 最近记录: |