我有最简单的 C# 控制台应用程序,仅执行 WriteLine 和 ReadLine。由于某种原因,它不能在其构建的机器上以独立模式运行。我在另一个盒子上尝试了构建的可执行文件,它工作正常。
尝试在这台机器上运行它会导致它挂在那里。它在 VS 中工作得很好,只是不能在命令行中工作。
尝试将 VS 附加到挂起进程时会出现类似“ConsoleApplication1 已触发断点”的内容,但看不到问题所在(它表明断点是 ntdll.dll 中的 _LdrpDoDebuggerBreak@0())。
关于如何诊断正在发生的事情有什么想法吗?
编辑(回答下面的评论):发布和调试都会发生相同的行为。平台设置为自动。测试的两台机器都是 64 位的。它正在使用的是 Windows 7,而我正在构建(以及它所在的位置)的是 Windows 10。
编辑2:我注意到的其他事情是尝试运行该应用程序不会打开控制台窗口(因此它在此之前挂起)。另外,在挂起过程中附加后分离也会挂起VS。
EDIT3:这是完整的压缩项目:(已删除)。出于好奇,它还包含调试 .exe 文件。它只是一个普通控制台应用程序项目,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("ASD");
Console.ReadLine();
}
}
}
您确定代码中除了 WriteLine() 和 ReadLine() 之外没有其他内容吗?我还没有测试过,但这听起来正是我期望的调用行为Debugger.Break() https://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break(v=vs.110).aspx.
MSDN 页面有一个注释:
从 .NET Framework 4 开始,运行时不再对 Break 方法的调试器启动进行严格控制,而是向 Windows 错误报告 (WER) 子系统报告错误。 WER 提供了许多设置来自定义问题报告体验,因此很多因素都会影响 WER 响应错误的方式,例如操作系统版本、进程、会话、用户、计算机和域。如果调用 Break 方法时出现意外结果,请检查计算机上的 WER 设置。有关如何自定义 WER 的更多信息,请参阅 WER 设置。如果要确保无论 WER 设置如何都启动调试器,请务必调用 Launch 方法。
在它正在工作的机器上,它要么忽略这一行,因为您没有安装开发工具,要么您的设置只是跳过它。在您正在开发的机器上,设置会有所不同。费用可能是基于 Windows 7 和 10 的默认设置,但我不知道。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)