在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次运行正常。超过该数字将冻结。
答案 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)
如果因为不想手动循环而仅避免断点,则可以尝试以下操作:
在许多周期之后,这将停止在断点上执行。这样您可以运行500个周期,然后在断点处暂停。
此外,您还可以创建一个Count变量来对周期进行计数,并在每个周期将其输出到控制台,以确定其经过的确切周期以及数量是否一致。
答案 4 :(得分:0)
选择菜单调试-全部破坏,可在正在执行的应用中进入下一个可用的代码行。有关更多信息,请参见Navigate Code with the Visual Studio Debugger。