如何使用 GDB 单步执行函数但不执行其参数

s4e*_*eed 5 c++ gdb

您可能知道,在 GDB 中,step(s)您可以使用命令单步执行函数。但s首先检查并单步执行函数的参数。例如对于以下函数:

foo(bar(1));
Run Code Online (Sandbox Code Playgroud)

走进foo,走进bar,然后走进foo。一旦参数数量越来越多,进入参数就变得很烦人。是否可以foo使用 GDB 直接单步执行并跳过单步执行其参数?

我知道我可以设置一个断点foo:)我正在寻找其他解决方案。

Kam*_*Cuk -1

在处理一些复杂的调用时:

printf("%d %d\n", function(), next_function());
Run Code Online (Sandbox Code Playgroud)

我“转到”step那条线,然后单步si进入。它单步执行第一个调用的函数。然后您可以finish退出并si再次进入下一个功能。

  • 我不明白这是如何解决的,因为这基本上就是他尝试过的,但不想做的:“一旦参数计数变得越来越多,进入参数就会变得烦人” (3认同)