Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VS调试时暂停程序_C#_Visual Studio_Debugging - Fatal编程技术网

C# VS调试时暂停程序

C# VS调试时暂停程序,c#,visual-studio,debugging,C#,Visual Studio,Debugging,有没有办法在VS中暂停调试而不设置断点?c控制台应用程序 我注意到,在几次之后,我的程序停止工作,但没有抛出异常,它只是停止做它应该做的事情。 这就是为什么我想知道是否有任何方法可以暂停代码,就像那里有一个断点一样,这样我就能够理解发生了什么 该程序从网站中提取数据,并将其插入MS SQL SERVER数据库(如果有必要) 编辑: 这就是在我的代码中发挥魔力并从网站上获取数据的功能。所有其他东西都只是数据监视器 public static string PostRequest(strin

有没有办法在VS中暂停调试而不设置断点?c控制台应用程序

我注意到,在几次之后,我的程序停止工作,但没有抛出异常,它只是停止做它应该做的事情。 这就是为什么我想知道是否有任何方法可以暂停代码,就像那里有一个断点一样,这样我就能够理解发生了什么

该程序从网站中提取数据,并将其插入MS SQL SERVER数据库(如果有必要)

编辑:

这就是在我的代码中发挥魔力并从网站上获取数据的功能。所有其他东西都只是数据监视器

    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次运行时都很正常。超过这个数字,它就会冻结。

你考虑过吗

Console.ReadLine();

你考虑过吗

Console.ReadLine();


这条线会像断点一样断开:

System.Diagnostics.Debugger.Break();

这条线将断开,就像它是一个断点一样:

System.Diagnostics.Debugger.Break();
您可以放置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);
    }
}    
您可以放置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);
    }
}    

如果您只是因为不想手动循环而避免断点,则可以尝试以下方法:

在函数的开头设置一个断点。 将鼠标悬停在断点上并选择“齿轮”符号 选中“条件”框 从第一个下拉列表中选择命中计数,然后设置一个值 这将在这么多个周期后停止断点上的执行。因此,您可以运行500个周期,然后在断点处暂停


此外,您还可以创建一个Count变量来计算周期数,并将每个周期的数字输出到控制台,以确定它完成了多少个周期,以及数字是否一致。

如果您只是因为不想手动循环而避免断点,您可以尝试以下方法:

在函数的开头设置一个断点。 将鼠标悬停在断点上并选择“齿轮”符号 选中“条件”框 从第一个下拉列表中选择命中计数,然后设置一个值 这将在这么多个周期后停止断点上的执行。因此,您可以运行500个周期,然后在断点处暂停


此外,您还可以创建一个Count变量来计算周期,并将每个周期的数字输出到控制台,以确定它到底完成了多少个周期,以及数字是否一致。

选择菜单“调试-全部中断”,以在正在执行的应用程序中中断下一行可用代码。有关更多信息,请参阅。

选择菜单“调试-全部中断”,以在正在运行的应用程序中中断下一行可用代码。有关更多信息,请参阅。

能否发布部分代码,以便我们了解它的功能?此外,如果还没有try/catch块,可以在代码周围放置try/catch块,并在catch块中放置断点。这样你就可以看到什么是例外了这听起来很像一个。在VisualStudio中调试时,如果您现在没有看到异常捕获,则可以启用更多异常捕获。你的代码是多线程的吗?另外,除非你有一个非常彻底的日志系统,否则断点是在程序运行时检查程序状态的唯一方法。很难判断你在这里想要完成什么。你停止做它应该做的是什么意思?它只是冻结了吗?它会崩溃吗?但是,如果您的代码被卡住,则在VS up top中靠近其他调试控件(如stop)的位置会有一个暂停按钮。您是否可以发布部分代码,以便我们看到它在做什么?此外,如果还没有try/catch块,可以在代码周围放置try/catch块,并在catch块中放置断点。这样你就可以看到什么是例外了这听起来很像一个。在VisualStudio中调试时,如果您现在没有看到异常捕获,则可以启用更多异常捕获。你的代码是多线程的吗?另外,除非你有一个非常彻底的日志系统,否则断点是在程序运行时检查程序状态的唯一方法。很难判断你在这里想要完成什么。你停止做它应该做的是什么意思?它只是冻结了吗?它会崩溃吗?但是,如果代码被卡住,则在VS up top中靠近其他调试控件(如stop)的位置会有一个暂停按钮。