最近、プログラムの実行シーケンスを収集するために GCC と gcov を変更しようとしています。ご存知のように、gcc は基本ブロック間のアークにコードをインストルメント化して、アークの実行回数をカウントします。したがって、アークに関数をインストルメント化すると、関数はそのアークの番号を出力するため、プログラムの実行シーケンスを収集できます。x86 および x86_64 の c プログラム、x86 の c++ プログラムでうまく機能します。ただし、x86_64 の c++ プログラムでは、セグメント エラーによってプログラムがクラッシュします。コンパイルは問題ありません。使用しているOSはCentOS 6.4です。gcc のバージョンは 3.4.5 です。誰かアドバイスはありますか?
サンプルプログラム:
#include <iostream> using namespace std; int main(){cout<<"hello world"<<endl;}
プログラムを x86_64 モードでコンパイルした場合。cout CALL になると、Segment Error でプログラムがクラッシュします。