C/C++プログラム実行時の関数をトレースする方法を紹介します。 1.はじめに C/C++プログラムで実行時の関数をトレースする場合、printf()などを埋め込んでログに出力することが少なくないと思います。 が、その方法ではログ出力するためにプログラムに手を入れなくてはならなず、非効率です。 また規模の大きなプログラムでは現実的な解決方法ではありません。 printf()を埋め込まずにトレースできないか、方法を探していたところ、標準でそのような機能があることをみつけました。 仕組みは、gccでトレースしたいプログラムファイルのコンパイル時に、コンパイルオプション"-finstrument-functions"を付与することで、関数の実行開始時および復帰時に下記のフック関数を呼び出せるようになります。 void __cyg_profile_func_enter(void* func, vo
![C/C++プログラム実行時の関数をトレースする方法](https://cdn-ak-scissors.b.st-hatena.com/image/square/dfbc6e2f054d227f84ae49acad791cebe05745f0/height=288;version=1;width=512/https%3A%2F%2Fwww.koikikukan.com%2Fimages%2F2017%2F01%2F20170118_trace.png)