関数のトレースを出力したい

Cで書かれたソースをデバッグしていると、たまに、この関数のこの事象はどこの関数から呼ばれたときに発生するのか?を知りたい場合がある。例えば、メモリ獲得の関数なんかで、どこでこのサイズのメモリを獲得しにきているのか知りたいときとか。
呼び出し元が少なければ、1つ1つ追えばいいのだが、多いとそうもいかない。デバッガで止めれない環境だったり、止めたら止めたで動きが変わったりすることもあるし、しょっちゅう止まって結局目的のブレークができなかったりする。
ずっと困っていたのだが、これといって策はなく、今日に至ったのだが、どうやら、linuxだとbacktrace関数というのがあって、その名の通りgdbのbacktraceのようなもの。コールスタックを取得することができるようだ。しかもbacktrace_symbolsを使えば、関数名の取得もできる。(当然だし、残念だがstaticはできない。。)
やっぱあると思っていたんだけどねぇ。。。詳細な記載は以下のページにゆだねたい。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/backtrace.3.html