私はいつもこれをやってきた方法がありますが、あなたの質問を見れば、より良い仕組みがあるのかどうか不思議です。私は何も見つけられませんでした。
踏み込んでいる関数の中にいつでもブレークポイントを設定することができますが、ステップを実行する前に 'commands'コマンドを使ってヒット時に何も印刷したくないことをgdbに伝えますそのブレークポイント。私はプログラムを実行すると、10行目(fooへの呼び出し)のブレークポイントで停止し、現在のコンテキストを表示することに気付くでしょう。 'commands 2'コマンドを発行し、そのブレークポイントでgdbを静かにするように指示した後、私がヒットしたときは何も表示されません。私はバックトレース(bt)をして、私がいたいと思っていたことを示しました。
希望はこのことができます:
> cat tmp.cpp
#include <stdio.h>
void foo(int a)
{
printf ("%d\n", a);
}
int main()
{
foo(0);
return 0;
}
> g++ -g tmp.cpp
> gdb a.out
GNU gdb Fedora (6.8-27.el5)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) break 10
Breakpoint 1 at 0x8048491: file tmp.cpp, line 10.
(gdb) break 5
Breakpoint 2 at 0x804846a: file tmp.cpp, line 5.
(gdb) run
Starting program: /home/ronb/software/a.out
Breakpoint 1, main() at tmp.cpp:10
10 foo(0);
(gdb) commands 2
Type commands for when breakpoint 2 is hit, one per line.
End with a line saying just "end".
>silent
>end
(gdb) c
Continuing.
(gdb) bt
#0 foo (a=0) at tmp.cpp:5
#1 0x0804849d in main() at tmp.cpp:10
(gdb)