TL;DR いろんな箇所から呼ばれる関数のデバッグをしたいので、呼び出し元の関数名を取得したい。 __builtin_return_address(0) と dladdr を使うと良さそう。 実装サンプル #include <stdio.h> #define __USE_GNU #include <dlfcn.h> void hoge() { Dl_info info; dladdr(__builtin_return_address(0), &info); printf("[%s] parent func name => %p [%s]\n", __func__, __builtin_return_address(0), info.dli_sname); } void foo() { hoge(); Dl_info info; dladdr(__builtin_return_address