这是我程序中的一个功能
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
如果你注意到它在中间调用另一个函数分区。在gdb会话中运行 我想跳过gdb向我展示parition的步骤,即我知道函数分区是正确的,所以做分区的工作,然后跳转到下一条指令
bbc = q - 1 - p + 1;
并且在我的调试会话中不显示有关分区的信息。 那么如何跳过该部分并继续调试快速排序。
答案 0 :(得分:3)
我认为您正在寻找跨越。
Step Over与Step Into相同, 除了当它达到呼叫时 另一个程序,它不会步骤 进入程序。程序会 跑,你将被带到 当前的下一个陈述 程序。
在GDB中,您可以通过发出next
命令来执行此操作。
当您在gdb中运行q = partition (num, p, r, june);
行时,键入next
,它将只执行分区函数,而无需详细介绍其代码。
您可以在此reference中找到有关单步执行gdb的详细信息。
答案 1 :(得分:2)
b <line number>
将设置一个断点
c
将持续到下一个断点。
答案 2 :(得分:1)
您可以在partition
之后为该行设置断点:
b <line number>
然后使用c
继续直到断点。
或者您可以使用n
跳过partition
来电(即,当您到达n
来电时输入partition
,它会跳过功能)。
或者您可以在输入后输入finish
退出partition
功能。