visualstudio点了调试出现发生生成错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了visualstudio点了调试出现发生生成错误相关的知识,希望对你有一定的参考价值。

参考技术A 这个问题是突然出现的,印象中没记的做过什么别的操作,有次像往常一样发布网站时,居然突然提示构建错误。

平时发布网站时都是勾选“在发布前删除所有现有文件”选项的。

当时出现这个问题后,网上百度了下,没发现特别有用的相关资料。后来看到有个帖子说的好像是另外一种情况,不过他里面说的是把“在发布前删除所有现有文件”选项去掉,选中下面的“在发布期间预编译”。后来试了下,发现是可以正常发布的。

后来就使用了一段时间的这种方式来发布网站,但个人还是想解决这个问题。今天问了下大神同事,建议说先把Temp文件夹里的内容清空一下,或是手动删除之前发布的文件。

我先把Temp文件夹里的文件全部删除,但最后有6、7个文件和文件夹不能删,提示重试什么的。最后我就没删那几个,保留了下来。然后尝试发布,发现还是提示构建错误。

最后打开发布网站路径的文件夹,发现里面的文件都删了,就只剩了一个asp.net_client文件夹(文件夹名好像是这么拼的,具体是怎样的忘记截图了),这个文件夹里有两个空文件夹,分别是.net framework2.0和.net framework4.0(文件夹名不是这个,好像是v开头的,应该都知道的)。我手动删了这些空文件夹(需要管理员权限)。

清空后,我再次发布,发现居然正常发布了!!!

到此,问题解决了。

总结,个人认为应该是那个类库文件夹VS没能删掉,从而导致提示的构建错误。

在此做个备忘,希望也能帮助后来者

只有在 Visual Studio 之外运行 EXE 时才会出现发布错误

【中文标题】只有在 Visual Studio 之外运行 EXE 时才会出现发布错误【英文标题】:Release bugs only show up when running EXE outside of Visual Studio 【发布时间】:2013-10-03 02:10:18 【问题描述】:

我正在尝试调试一个问题,该问题仅在我运行直接在 Visual Studio 外部构建的发布 exe 时发生。当我在 Visual Studio 中执行它时,即使使用特定的项目属性来调试“发布”版本(例如打开优化),程序也会正常运行,如下页所述。

http://msdn.microsoft.com/en-us/library/fsk896zz%28v=vs.100%29.aspx

我在使用这些设置和使用 VS 运行/调试时没有遇到任何问题,但是当我将 exe 和所需文件(图像和一些 dll)复制到它自己的目录并直接运行 exe 而不是通过 VS2010 运行时,我遇到了一些问题错误。这使得调试变得困难,因为无论我使用什么设置,我都无法在 VS 中出现问题。

我是否遗漏了一些设置,还是在 VS2010 之外发生了更多我无法在 VS 2010 中模拟的不同情况?

我没有使用任何可能影响它的参数或环境变量,并且工作目录中的文件结构与源代码目录中的相同。

编辑: 通过使用此处的信息附加到 exe 找到错误(未初始化的变量): Release build changes behavior when run outside of the debugger

【问题讨论】:

你逃避的“几个错误”可能很能说明问题。也许包括那些。 __debugbreak(); 放到你的 main() 函数中。 只是为了确认一下:您的常规版本构建开启了所有优化,对吗? (通过尝试调试发布版本,您通常会添加调试符号并降低编译器优化)您看到什么样的错误?致命的? @Raja 我的发布版本将引用和启用 COMDAT 折叠设置为是。不知道还有什么。我只是遇到一些错误,例如应该销毁的图像仍留在屏幕上。并没有什么实际崩溃或任何东西。 【参考方案1】:

Visual C++ 的调试器可以附加到已经运行的进程。 (调试-> 附加到进程。)您可以尝试使用它在 Visual Studio 之外启动您的 exe,然后附加到它并调试错误。作为执行此操作的另一种方法,正如@Hans Passant 建议的那样,您还可以将__debugbreak(); 添加到您的进程中,以强制 Windows 在您运行它时提供调试提示并以这种方式附加 Visual Studio 调试器。

我很想使用Process Monitor 来比较调试器内外的 exe 执行情况,看看它们在文件访问、DLL 加载等方面是否真的在做同样的事情。

有关类似问题,请参阅 this question。

【讨论】:

原因是一个未初始化的变量。我发现它是由于您附加到该过程的解决方案。奇怪的是,从 VS 内部运行时变量将如何初始化,即使您打开了优化。我忘了我可以附加到调试的过程中。谢谢。【参考方案2】:

两个念头立刻浮现在脑海: - 未初始化的变量 - 比赛条件。查看您的线程模型,并考虑锁定关键部分或变量访问。

【讨论】:

以上是关于visualstudio点了调试出现发生生成错误的主要内容,如果未能解决你的问题,请参考以下文章

只有在 Visual Studio 之外运行 EXE 时才会出现发布错误

安装vs2013出现: 安装时发生严重错误,如图

总是弹出visual studio 实时调试器 三种解决办法

Visual Studio 2017 调试错误:为了防止在评估函数 *.toString 时发生不安全的中止,所有线程都被允许运行

Visual Studio 2015 远程调试不兼容平台错误

调试器不会因错误而停止