Cómo generar un gráfico de llamada para código C ++

Estoy tratando de generar un gráfico de llamadas con el que encontrar todas las rutas de ejecución posibles que están afectando a una función en particular (para que no tenga que averiguar todas las rutas manualmente, ya que hay muchas rutas que conducen a esto función). Por ejemplo

path 1: A -> B -> C -> D  
path 2: A -> B -> X -> Y -> D  
path 3: A -> G -> M -> N -> O -> P -> S -> D  
...  
path n: ...

He intentado Codeviz y Doxygen, de alguna manera ambos resultados muestran nada más que funciones de la función de destino, D. En mi caso, D es una función miembro de una clase cuyo objeto estará envuelto dentro de un puntero inteligente. Los clientes siempre obtendrán el objeto puntero inteligente a través de una fábrica para invocar D.

¿Alguien sabe como lograr esto

Respuestas a la pregunta(7)

Su respuesta a la pregunta