错误和异常程序行为的典型原因是什么只在发布编译模式中表现出来但在调试模式下不会发生?
我想部署在C#中完成的应用程序的发布版本.
当我使用Release
配置构建时,我仍然可以看到生成了.pdb
文件,这意味着我的应用程序仍然可以调试.这也意味着我的代码中某处存在一些调试信息,从而使其速度降低一些.
如果是这样,我怎样才能完全抑制二进制文件中产生的任何调试信息?你也知道释放的原因.pdb
吗?该Release
配置具有Optimize code
检查,并且只有TRACE
常数被定义,而不是DEBUG
.
谢谢你的帮助.
我正在开始部署我的Web应用程序,我需要保证所有要部署的程序集都是使用Release配置构建的.我们的系统是使用C#/.Net 3.5开发的.
有没有办法实现这个目标?
我正在尝试将我的小应用程序从Win XP和VS 2005移植到Win 7和VS 2010.
该应用程序在调试模式下编译并运行顺利,但在发布模式下,我收到以下错误:
pcrecpp.lib(pcrecpp.obj) : error LNK2038: mismatch detected for
'_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in LoginDlg.obj
Run Code Online (Sandbox Code Playgroud)
我应该在哪里开始检查?
我必须调试一个c ++项目,但由于一个依赖项无法在调试模式下编译,到目前为止我还无法修复该问题,我想尝试在发布模式下调试项目.
目前应用程序由于空指针而崩溃,但我没有导致错误的代码.由于在发布模式中显然忽略了断点,我想知道找出错误的最佳方法是什么.
我是C#和VS 2010的新手,我正在遵循在Visual Studio 2010中创建C#Windows服务的在线指南.
但是,当我尝试构建应用程序时,我没有在该/bin/release
文件夹下创建任何文件.
我确实得到了该/bin/Debug
文件夹下的文件.
我已经尝试了所有构建配置,例如Active,DEBUG,Release,All,但没有任何变化.
我试过关闭解决方案并重新启动等.
我在许多其他项目中遇到过同样的问题,这些项目都是C#控制台应用程序.
该/bin/release
文件夹存在(因为我必须手动创建它),我已检查属性选项卡中的输出路径,以确保发布配置针对该文件夹.
我在工作中询问了我们的"C#guru",他没有任何线索.有谁知道是什么原因引起的?
今天我发现我正在处理的编译静态库在Release模式下比在Debug中大得多.我发现它非常令人惊讶,因为大部分时间恰好相反(据我所知).
调试模式下的大小略大于3 MB(这是一个相当大的项目),但在发布时它最多可达到6.5 MB.有人能告诉我这可能是什么原因吗?我正在使用静态库项目的常规Visual Studio(2008)设置,在构建配置设置中几乎没有更改.在发布时,我正在使用/ O2并且"赞成大小或速度"被设置为"不会"./ O2("最大化速度")是否会导致最终的.lib比包含所有调试信息的调试版本大得多?
编辑:
附加信息:
调试:
- 整个程序优化:否
- 启用功能级别链接:否
发布:
- 整个程序优化:启用链接时代码生成
- 启用功能级别链接:是
根据文档我知道
调试信息被删除。调试已禁用。
但是我们可以以某种方式强制打印日志,或者在发布模式下进行调试吗?“生产应用程序”我正在使用 Android Studio。
例如,在 AS 中开发 Android 应用程序时,我们可以打印日志
android:debuggable="true"
Run Code Online (Sandbox Code Playgroud) 我正在使用从MIT汽车数据集训练的Haar级联分类器来检测OpenCV中的车辆(使用随OpenCV提供的实用程序进行训练).在调试模式下编译时,这种方法工作得相当好,但是在发布模式下编译时,级联根本不会进行任何检测.在下面的测试图像上运行以下代码可以在调试模式下进行检测,但在发布模式下无任何检测(此行为将继续通过我的数据序列中的所有图像).
你能说出为什么会出现这种情况,更重要的是,在发布模式下运行时我能做些什么才能获得检测?
码
cv::Mat testImage = cv::imread("testImage.png",0);
cv::equalizeHist(testImage, testImage);
cv::CascadeClassifier vehicleCascade;
vehicleCascade.load("cars3.xml");
// Detect vehicles
std::vector<cv::Rect> cars;
vehicleCascade.detectMultiScale(
testImage, // Input image
cars, // Output bounding boxes
1.1, // scale factor - how much image size is reduced at each scale
5, // min neighbours - how many neighbours required to maintain rect
0|CV_HAAR_SCALE_IMAGE, // Not used
cv::Size(30,30), // Min poss object size
cv::Size() // Max poss object size
);
std::cout << "Found " << cars.size() << …
Run Code Online (Sandbox Code Playgroud) 不确定这是Swift,XCode还是Alamofire的问题,但我认识到混合的Swift/Objc应用程序中不同位置的奇怪行为.它只发生在用Swift编写的部分中并使用闭包/网络.以下是它发生的示例代码:
Alamofire.request(.DELETE, "http://someUrl.com/user", parameters: nil)
.response { (request, response, data, error) in
// some cleanup code and an alert
}
Run Code Online (Sandbox Code Playgroud)
当我在我的iPhone上以调试模式运行我的应用程序时,一切正常,清理代码和警报就像我们执行运行上面代码的"删除帐户"操作时那样.
但是,当我把我的应用程序用户通过Testflight或直接运行我在同一个iPhone应用程序,但使用发布版本的配置,然后清理代码不运行和警报显示不出来.看起来整个闭包不会被调用.
有没有人有这种奇怪行为的经验,知道如何预防它们?我不确定这里的问题是什么,因此我很难找到适用于调试和发布模式的解决方案.
感谢您的任何帮助!
环境: 我使用Alamofire 1.1.3作为嵌入式框架集成到我的项目中作为git子模块.该应用仅在iOS 8+上运行,我在iPhone 6上安装了iOS 8.1.2.
release-mode ×10
c++ ×5
debug-mode ×4
c# ×3
.net ×1
alamofire ×1
android ×1
assemblies ×1
closures ×1
debugging ×1
flutter ×1
ios ×1
linker ×1
opencv ×1
pcre ×1
pdb-files ×1
swift ×1
visual-c++ ×1