如何在函数的N个递归调用中中断程序?

时间:2019-06-14 11:00:09

标签: c# debugging rider

我的程序中有一个递归调用

Left?.Generate(ref result, ref resultGiven);

Generate()函数被调用 6 次时,我想调试程序并停止执行。我该怎么办?

3 个答案:

答案 0 :(得分:1)

最简单的方法是使用全局变量。

// somewhere before Generate first call
var counter = 0;

void Generate(ref result, ref resultGiven)
{
  if (counter == 6)
     return;
  counter++;
  // the rest of function's body
} 

答案 1 :(得分:1)

如果我理解正确,则希望限制递归的深度(即,不要让. 自称多于{{1 }}次。如果您是这种情况,可以尝试StackTrace类:

Generate

答案 2 :(得分:1)

使用count或step参数就足够了;

Left?.Generate(ref result, ref resultGiven); // is same

函数看起来像这样:

void Generate(object ref result, object ref resultGiven, int step = 0)
{
  // do stuf

  // break for debug
  if (step >= 6)
  {
    return; 
  }
  // or only break when debugger is attached
  if (System.Diagnostics.Debugger.IsAttached && step >= 6)
  {
    return; 
  }
  // recursive
  Generate(ref result, ref resultGiven, step++);
}