C 如何在使用gdb调试递归函数时跳过部分

C 如何在使用gdb调试递归函数时跳过部分,c,debugging,gdb,C,Debugging,Gdb,这是我程序中的一个函数 void quicksort (int *num, int p, int r, int june) { int q, bbc, ccd; if (p < r) { call++; q = partition (num, p, r, june);//<--I want to skip this call in gdb session bbc = q - 1 - p + 1;//<-- and want t

这是我程序中的一个函数

void
quicksort (int *num, int p, int r, int june)
{
  int q, bbc, ccd;
  if (p < r)
    {
      call++;
      q = partition (num, p, r, june);//<--I want to skip this call in gdb session
      bbc = q - 1 - p + 1;//<-- and want to continue execution step by step from here
      quicksort (num, p, q - 1, bbc);
           ccd=r-q+1;
      quicksort (num, q + 1, r, ccd);
    }
} //since it is a recursive function each time quicksort is called partition is also executed I want to focus my debugging only to quicksort
在调试会话中,不显示有关分区的信息。 那么,我如何跳过这一部分并继续调试快速排序呢

b <line number>

将继续,直到下一个断点。

我想您正在寻找一个步骤

跨过与跨入相同, 除了当它到达一个呼叫 另一个程序,它将不执行步骤 进入程序。该程序将 跑吧,你会被带到 当前语句中的下一个语句 程序

  • 引自
在GDB中,您可以通过发出
next
命令来实现这一点。 当您运行
q=partition(num,p,r,june)时line,键入
next
,它将只执行分区函数,而不深入其代码


您可以在此找到有关在gdb中单步执行的详细信息。

您可以在
分区之后为行设置断点:

b <line number>
b
然后使用
c
继续,直到断点

或者,您可以使用
n
跳过
分区
调用(也就是说,在到达
分区
调用时键入
n
,它将跳过函数体)


或者您可以键入
finish
,在进入分区后退出分区功能。

Silveria您提到的并没有发生,实际上是在分区功能内发生的,这就是我发布此问题的原因。@Registered User您在用什么,
下一步
步骤
?Silveria man我之前的评论是错误的。Kudoos告诉你,我能够调试递归函数,我从早上开始就很忙+这是我的荣幸。
c
b <line number>