gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:53:57 28 4
gpt4 key购买 nike

这是我的程序中的一个函数

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 session 中运行时调用了另一个函数分区我想跳过 gdb 显示分区步骤,即我知道函数分区是正确的,所以执行分区的操作,然后跳转到下一条指令

     bbc = q - 1 - p + 1;

并且在我的调试 session 中不显示有关分区的信息。那么我怎样才能跳过这一部分并继续调试快速排序。

最佳答案

我认为您正在寻找超越

Step Over is the same as Step Into, except that when it reaches a call for another procedure, it will not step into the procedure. The procedure will run, and you will be brought to the next statement in the current procedure.

在 GDB 中,您可以通过发出 next 命令来完成此操作。当您在 gdb 中运行 q = partition (num, p, r, june); 行时,输入 next ,它将只执行分区函数,而不会进入其分区函数详细代码。

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

关于c - 如何在使用 gdb 调试递归函数时跳过一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6428524/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com