Xcode

2013-02-07, xcode C

ブレークポイントで止まらない理由

検索すると沢山ヒットする「オレンジ色のブレークポイント」の話ではありません。(Objective-Cではない)C言語で開発している場合に、ハマった時の話です。

以下のように、メインプログラムの中で別のソースファイル(ここではfoo.c)に定義された関数を呼び出したい場合、そのヘッダファイル(foo.h)をインポートしておき、ビルド時にはそれぞれ(foo.c,main.c)をコンパイルした後にリンクする、という手順を踏みます(と言ってもXcodeは全自動でやってくれるのですが)。

main.c
#import "foo.h"

int main(int argc,char *argv[]){
  foo();
}

上記が”正しい”やり方ですが、foo.cに関数を追加するとfoo.hも同時に修正が必要で面倒だったので、以下のようにヘッダファイルを介さず、直接foo.cをインポートしました。

main.c
#import "foo.c"

int main(int argc,char *argv[]){
  foo();
}

この場合、そのままビルドするとfoo.cの関数が二重にリンクされるためエラーになるのですが、Xcodeの設定で、foo.cをコンパイル対象から外してやるとmain.cにインポートされている分だけがビルドされるので、(ビルドは)うまくいきます。しかしここからが問題で、この状態だと、foo.cに設定したブレークポイントが効かなくなってしまいます。これもXcode側の設定で何とかなるかなぁ、と色々探してみたのですが見つけきれませんでした。というわけで、やっぱり行儀良くヘッダファイルをインポートしましょう、という結論に至っています。

参考URL

この記事は役に立ちましたか?