VS在调试时暂停程序

时间:2018-10-09 20:22:34

标签: c# visual-studio debugging

在VS中没有断点可以暂停调试吗? (c#控制台应用程序)

我注意到一段时间后,我的程序只是停止工作,但没有引发异常,它只是停止了应做的事情。 这就是为什么我想知道是否可以通过某种方式暂停代码,就像在那里有断点一样,以便我能够了解发生了什么。

程序会从网站上抓取数据,并在需要时将其插入到MS SQL SERVER数据库中。

编辑:

这就是在我的代码中发挥神奇作用并从网站上抓取数据的功能。其他所有东西只是数据monipulatins。

    public static string PostRequest(string url, string request)
    {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = request;
            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();
        }

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            return result;
        }
    }    

再次没有异常被抛出。 我没有要求断点,因为该程序在前500次运行正常。超过该数字将冻结。

5 个答案:

答案 0 :(得分:1)

您考虑过

Console.ReadLine();

Console.ReadKey();

答案 1 :(得分:1)

此行将中断,就好像它是一个断点一样:

System.Diagnostics.Debugger.Break();

答案 2 :(得分:1)

您可以将System.Diagnostics.Debugger.Break();放置在某个可以触发它的“激活”条件下。

例如,您可以让一个线程仅检查某些条件

首先,是这样的(是的,可以改进,这只是一个主意)

void CheckAndDebugBreak()
{
    while (true)
    {
        string fileGuard = ...; // whatever file you can easily create/delete
        if (File.Exists(fileGuard))
        {
            File.Delete(fileGuard); // to avoid hitting the breakpoint next time, recreate the file if needed 
            System.Diagnostics.Debugger.Break(); 
        }
        // some way to stop the infinite loop e.g.
        if (somevariableSetOutside)
            break;

        // wait a while before next check
        System.Threading.Thread.Sleep(1000);
    }
}    

答案 3 :(得分:1)

如果因为不想手动循环而仅避免断点,则可以尝试以下操作:

  1. 在函数开始处设置一个断点。
  2. 将鼠标悬停在断点上,然后选择“齿轮”符号
  3. 选中“条件”框
  4. 从第一个下拉列表中选择“命中计数”,然后设置一个值

在许多周期之后,这将停止在断点上执行。这样您可以运行500个周期,然后在断点处暂停。

此外,您还可以创建一个Count变量来对周期进行计数,并在每个周期将其输出到控制台,以确定其经过的确切周期以及数量是否一致。

答案 4 :(得分:0)

选择菜单调试-全部破坏,可在正在执行的应用中进入下一个可用的代码行。有关更多信息,请参见Navigate Code with the Visual Studio Debugger