Eclipse CDTによるSystemCプログラムのデバッグ

TIPSです。

SystemCプログラムはC++プログラムなのでGCCでコンパイルすることができます。なのでEclipse CDTのデバッガでできるはず…なのですが、デバッグを開始すると「ソースコードが見つからない」と怒られます。

これは以下の様な背景によります。SystemCにおいてはユーザープログラムのエントリーはsc_main()と定められています。そしてmain()はSystemCライブラリの中で暗黙に定義されているため、ユーザーからは見えません。一方、Eclipse CDTのDebug Configurationはデフォルトでmain()の先頭にブレークポイントを張ります。その結果、デバッガがSystemCプログラムをロードした後、ソースコード情報のないmain()で実行を停止するため、上記のようなメッセージが出てぎょっとすることになります。

わかってしまえば簡単な話です。

  1. ブーレポイントをmain()ではなくsc_main()に張る。
  2. main()を自分で定義する。

1の方法が一番きれいです。ただし、たまにしかSystemCを使わない人は、事情を忘れていて驚くかもしれません。また、不慣れな人にプロジェクトを渡す際に引継ぎの手間がかかります。

2.はソースコードがあまりきれいではありませんが、びっくりせずに済む方法です。この場合、SystemCの要件を満たすためにmain()は以下のようにします。

int main(int arg, char *argv[])
{
    // Make sure to set a break point to sc_main()
    sc_elab_and_sim(arg, argv);
}

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください