原问题:为什么在VSc++发布版本中this指针为0?在使用/Zi(编译器:调试信息格式-程序数据库)和/DEBUG(链接器:生成调试信息,是)选项中断VisualStudio2008SP1版本构建时,为什么“this”指针始终为0x00000000?编辑:改写问题:我最初的问题很不清楚,很抱歉。当使用VisualStudio2008调试器单步调试程序时,我可以看到所有变量,但本地对象的成员变量除外。这可能是调试器从this指针导出这些,而VS总是说是0x00000000,所以无法导出当前对象的成员变量(它不知道对象的内存位置)当加载一个巨型转储(类似于Windows小型转储,但包含进
我正在使用从MITcarsdataset训练的Haar级联分类器在OpenCV中检测车辆(使用OpenCV提供的实用程序进行训练)。这在Debug模式下编译时工作得相当好,但在Release模式下编译时,级联根本不会进行任何检测。在下面的测试图像上运行以下代码会在Debug模式下进行检测,但在Release模式下不会进行检测(此行为在我的数据序列中的所有图像中继续存在)。您能否说明为什么会发生这种情况,更重要的是,在Release模式下运行时我可以做些什么来获得检测?CascadeFile代码cv::MattestImage=cv::imread("testImage.png",0);
我正在开发VisualStudio2010上的C++软件。由于该软件应该在无法进行人工交互的服务器上运行,我真的需要摆脱这个“program.exe已停止工作”窗口,在出现错误时在发布版本中弹出。我只是希望程序终止(也许还会给出错误消息,但不一定)并且不要让它保持阻塞等待某人单击“关闭程序”按钮。我不得不提一下,我的机器上有64位Windows7Professional。我已经阅读了几件事,例如:_set_abort_behavior函数。这解决了调用abort()时的情况,但对于诸如“vector下标超出范围”之类的错误,情况并非如此。我知道我可以通过异常处理来解决其中一些错误,但并
谁能告诉我在VisualStudio2012的native(C++)测试项目中运行单元测试时如何启用或获取调试或控制台文本输出?答案不应包含短语“使用Google测试”。 最佳答案 在单元测试代码中,可以使用Logger::WriteMessage("Mymessagestring");消息将出现在“输出”窗口中。 关于c++-VisualStudionative单元测试:Debug/consoleoutput?,我们在StackOverflow上找到一个类似的问题:
使用VisualStudio2008SP1,这一行:LINK:debug\XXXXX.exenotfoundornotbuiltbythelastincrementallink;performingfulllink每次编译项目时都会出现,无论我做了多么小的更改。这可能是什么原因? 最佳答案 老问题,但以防万一它仍然是一个问题(而且它是..)。增量链接与生成list文件不兼容(项目选择>链接器>list文件>生成list:是)。实际上,生成list会修改exe/dll,因此链接器必须进行完全链接。有一些解决方法,有关更多详细信息:ht
我需要在“Release模式”中构建并在GCC中进行全面优化的具体选项是什么?如果有多个选项,请列出所有选项。谢谢。 最佳答案 http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html没有“一刀切”——您需要了解您的应用程序、您的要求和优化标志,以确定您的二进制文件的正确子集。或者你想要的答案:-O3 关于c++-如何在GCC中通过优化构建Release模式?,我们在StackOverflow上找到一个类似的问题:
是否有标准化的(例如由所有主要编译器实现的)#define来区分调试和发布版本? 最佳答案 如果相信#ifdefNDEBUG//nondebug#else//debugcode#endif是最便携的。但是没有编译器知道你是在编译调试还是发布,所以这不是自动的。但是这个是assert.h在c-runtime中使用的,所以它很常见。VisualStudio会设置它,我相信大多数其他IDE也会设置它。 关于c++-C/C++:Portablewaytodetectdebug/release?,
我在使用VisualC++2008时遇到问题。我已经安装了opencv,并且我已经创建了一个新程序,并且我构建它时没有出现任何错误。但是,它提示调试时找不到MSVCR90D.dll。在Release模式下完全没有问题。我确实在Winsxs文件夹之一中有MSVCR90D.dll。有谁知道解决这个问题?这是一个已知的错误?杰拉德 最佳答案 本forumpost中描述了几种潜在的解决方案。看看这些是否有帮助。从那里得到一个提示:Goto%SystemDrive%\Windows\WinSxSandlookforthedirectoryx8
我注意到在使用MSVisualStudio2008生成新的C++项目时,Release构建包含调试符号-特别是启用了以下设置:C++/常规/调试信息格式设置为程序数据库。链接器/调试/生成调试信息设置为Yes。我从未在VisualStudio的早期版本中注意到这一点。那么,除了生成更大的EXE文件之外,启用这些设置还有什么缺点吗? 最佳答案 多年来,我们一直在商业版本中启用这些设置,没有明显的缺点。不过,好处是巨大的。我们集成了一个故障转储打包程序,它将转储连同其他一些信息一起打包,并通过电子邮件(在用户同意的情况下)发送到公司收件
今天我发现我正在处理的编译静态库在Release模式下比在Debug模式下要大得多。我发现这非常令人惊讶,因为大多数时候情况正好相反(据我所知)。Debug模式下的大小略高于3MB(这是一个相当大的项目),但在发布时它会增加到6.5MB。有人能告诉我这可能是什么原因吗?我正在为静态库项目使用通常的VisualStudio(2008)设置,几乎没有更改构建配置设置。在发布中,我使用/O2并且“偏好大小或速度”设置为“两者都不”。/O2(“最大化速度”)是否会导致最终的.lib比包含所有调试信息的调试版本大得多?编辑:补充资料:调试:-整个程序优化:没有-启用功能级链接:否发布:-整个程序