みたいなプロジェクト。
ビルド->実行すると
Unable to set breakpoint (null). Make sure to build the file (null) with debugging symbols. :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\ :do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\ :le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:\
Undefined command: "". Try "help". Undefined command: "". Try "help". Undefined command: "". Try "help". Undefined command: "". Try "help".
みたいなのが大量に吐かれる。 宇都宮隆か!(並のHackerにはできないツッコミ)
これはー、デバッガの知識が要りそうだなー。
ブレークポイント無効とか直接実行すれば起動できるが、もう既にgdbなしではひとりでお買い物にもいけない状態なので困る。
一応PROJECT.xcodeproj 以下が怪しいのではないかと思ってみてみる。
PROJECT.xcodeproj |-- USER.mode1v3 |-- USER.pbxuser `-- project.pbxproj
3ファイルのみの構成。それぞれの役割を知りたい。
project.pbxproj
カレントプロジェクトの設定が保存されている。
このグループは実際はこのパスにありますよー、とか
このバージョンのSDK使いますよー、とかXcode上から設定できるものが収まっていた。
USER.mode1v3
Xcodeプロジェクト自体に関連づけられているplistファイルというかんじだった。あんまりユーザーが意図的にいじるものではなさそう。
USER.pbxuser
project.pbxprojのユーザー固有の値を設定するファイルかなあ。
適当に git grep breakpoint としたらなんか以下のように大量に定義されていた
07B640D10FAAF2830073B91A /* ItemViewController.m:135 */ = { isa = PBXFileBreakpoint; actions = ( ); breakpointStyle = 0; continueAfterActions = 0; countType = 0; delayBeforeContinue = 0; fileReference = 07384B640FA748F1009A52CC /* ItemViewController.m */; functionName = "-loadview"; hitCount = 0; ignoreCount = 0; lineNumber = 135; location = "PROJECT"; modificationTime = 263541762.269287; state = 2; };
実際はこの設定かファイル全体のパースエラーが生じて、デバッガに投げるコマンドが不正になってエラーが返ってくる? と推測してみた。
"Unable to set breakpoint (null) "とかでてるし。
stringsファイルは,テキストエンコーディングがUnicode (UTF-16) で,そのままだとsvnにバイナリとみなされちゃう。stringsファイルは,UTF-8に変換しても実用上問題ないのだけど,Appleもどこかの文書で Unicode (UTF-16) にするように指示していた (ように記憶している。ソースは失念) し,Xcode.appやなるほど。git側の知識も必要そうだなー。nibtool
,genstrings
などが生成するstringsファイルはデフォルトでUTF-16なので,そのままUTF-16で通したい。svnにバイナリと認識されても,まあ不都合はないけど,なんとなく美しくないなあ…と。
PROJECT.xcodeproj 内のファイルを管理対象から除外しておく
build/ は以前から除外済み。
ただ、そうするとビルドディレクトリを変更したいときに困る。その場合は <username>.pbxuser を default.pbxuser にリネームして svn add するとよい。ユーザー設定がない時はdefault.pbxuser を見てくれるということかな。
なのでユーザー名を指定した。
.gitignore-myiPhoneOSProject.sample
*.xcodeproj/USER.mode1* *.xcodeproj/USER.pbxuser build/
.pbxuserを一旦退避させて初期化を試みる
実行。
Re-enabling shared library breakpoint 1 Re-enabling shared library breakpoint 2 Re-enabling shared library breakpoint 4 Re-enabling shared library breakpoint 5 Re-enabling shared library breakpoint 6 Re-enabling shared library breakpoint 7
なんだろうこれは。3でアホになったのだろうか。
初期化前は起動しなかったが、今回アプリケーションは起動した。
ブレークポイントを示す青いチェックがまだのこっている。キャッシュクリーン? -> かわらず
試しにAppDelegate.mの冒頭にブレークポイントを貼ってみる。-> ちゃんと効いた。
ということは .pbxuser 以外のファイルにカスが残っているのか。
再作成された.pbxuseと diff取ってみる。-> よくわからんげ。
つづく。