Не понял (в ссылке l на конце нет). Там ни слова о стеке. Только call graph. Но это и без gprof можно, хотя и весьма вероятностно... (cflow). Но в варианте с gprof не лучше: где гарантия, что прокрутились _все_ варианты выполнения программы? Их нет даже если мы code coverage сделаем и тестов понаписываем. Простое доказательство от противного: (void (*)(void)(rand()) -- ага? Вообще все runtime методы весьма поверхностны, по правде говоря-то...