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>
将继续,直到下一个断点。我想您正在寻找一个步骤 跨过与跨入相同, 除了当它到达一个呼叫 另一个程序,它将不执行步骤 进入程序。该程序将 跑吧,你会被带到 当前语句中的下一个语句 程序
- 引自
next
命令来实现这一点。
当您运行q=partition(num,p,r,june)时在gdb中的code>line,键入next
,它将只执行分区函数,而不深入其代码
您可以在此找到有关在gdb中单步执行的详细信息。您可以在分区之后为行设置断点:
b <line number>
b
然后使用c
继续,直到断点
或者,您可以使用n
跳过分区
调用(也就是说,在到达分区
调用时键入n
,它将跳过函数体)
或者您可以键入finish
,在进入分区后退出分区功能。Silveria您提到的并没有发生,实际上是在分区功能内发生的,这就是我发布此问题的原因。@Registered User您在用什么,下一步
或步骤
?Silveria man我之前的评论是错误的。Kudoos告诉你,我能够调试递归函数,我从早上开始就很忙+这是我的荣幸。
c
b <line number>