簡體   English   中英

在特定計算機上使用C#console app的奇怪問題

[英]Weird issue with C# console app on a specific machine

我有最簡單的C#控制台應用程序,它只能執行WriteLine和ReadLine。 出於某種原因,它不會在它構建的機器上以獨立模式運行。 我嘗試在另一個盒子上構建可執行文件,它工作正常。

試圖在這台機器上運行它只是掛在那里。 它在VS內部工作正常,而不是從命令行。

嘗試將VS附加到掛起進程時說“ConsoleApplication1已觸發斷點”,但無法看到問題所在(它表示斷點是ntdll.dll中的_LdrpDoDebuggerBreak @ 0())。

關於如何診斷正在發生的事情的任何想法?

編輯(回答下面的評論):發布和調試都會發生相同的行為。 平台設置為自動。 測試的兩台機器都是64位。 它正在開發的是Windows 7,我正在構建的那個(以及它掛起的地方)是Windows 10。

EDIT2:我注意到的其他事情是嘗試運行應用程序沒有調出控制台窗口(因此它在此之前掛起)。 此外,附加到掛起過程后分離也掛起VS.

EDIT3:這是完整的壓縮項目:(已刪除)。 它包含調試.exe文件以及好奇。 它只是一個帶有以下代碼的vanilla控制台應用程序項目:

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()的行為。

MSDN頁面有一個注釋:

從.NET Framework 4開始,運行時不再嚴格控制啟動Break方法的調試器,而是向Windows錯誤報告(WER)子系統報告錯誤。 WER提供了許多設置來自定義問題報告體驗,因此很多因素將影響WER響應錯誤的方式,例如操作系統版本,進程,會話,用戶,計算機和域。 如果在調用Break方法時遇到意外結果,請檢查機器上的WER設置。 有關如何自定義WER的詳細信息,請參閱WER設置。 如果要確保無論WER設置如何啟動調試器,請務必調用Launch方法。

在它正在工作的機器上,它要么忽略這一行,因為你沒有安裝開發工具,要么你的設置只是跳過它。 在您正在開發的機器上,設置會有所不同。 可能的費用是基於Windows 7和10的默認值,但我不知道。

終於想通了。 這是我可愛的殺毒軟件。 希望這可以幫助將來的某個人,Avast沒有提出通常的提示,表明它正在掃描應用程序或隔離它或任何東西。 禁用防護罩(Avast Shields Control - >禁用10分鍾)可使應用程序正常工作。 哎呀!

謝謝大家的支持!

有趣的是,它工作的另一台機器仍在運行Avast,但我認為它是一個主要版本。 這適用於版本10.4.2233。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM