Macintosh Developer Online (MDOnline)


2000年12月1日発行号 - CodeWarriorでデバッグ



日本語のTech Info Libraryに新しい記事が掲載されていますが、まだ記事にしていません。それから、Technical Q&Aにも新しい記事が上がっています。これらは順次記事にしますので、よろしくお願いします。
CodeWarriorのデバッグ方法を記事にしました。図版は当然、SnapXShotで作成しましたが、今日のところはカーソルは入っていません。CodeWarriorでデバッグができるとなると、こちらでもう少し開発を続けようかという気もするのですが、パッケージ化をCW6で以前にちょっとやってみたのですけど、かなり面倒というか、明らかにProject Bulderの方が手軽なんですよね。それに、例のでっかアイコンを作成するのもやっぱりProject Builderの方がやりやすそうです。Code Warriorでもいずれできるようになるとは思いますけど、しばらくは行ったり来たりということになりそうです。だけど、ユーザインタフェースを作るのを、昔ながらの手法でやるよりはInterface Builderで作った方がはるかに楽な気はしますが、そうして作ったダイアログボックスのコントロールをやりとりする方法は、初めての世界だけにそっちではまるかもしれません。いずれにしても、悩ましいところです。SnapXShotは利用者サポート用のメーリングリストを作成しましたので、よろしかったら御参加ください。
http://msyk.locus.co.jp/macos/snapxshot/
(新居雅行 msyk@mdonline.jp


【SnapXShot制作記】CodeWarrior 6でのデバッグ方法

前回の『キーセンスは意外に簡単にできたが…』では、CodeWarrior 6をMac OS X Public Betaで使った状態でのデバッグができないことを書いたが、何人かの読者の方より情報をいただき、デバッグができるようになった。SnapXShotの話というよりも一般的な話なのではあるが、話の続きということで、このシリーズでデバッグを可能にする方法を説明しておこう。

CodeWarrior 6をMac OS Xで使う時のデバッグ方法としては、2通りの方法がある。単一マシンでのみ行える方法と、ネットワークを経由して開発マシンと実行マシンを別々にして行なう方法だ。前者を「スタンドアロンデバッグ」、後者を「リモートデバッグ」と呼んで区別することにしよう。なお、リモートデバッグでも、コントロールする側と実行する側が同一のマシンでもかまわないので、1台のマシンで開発しているときにも使える手法である。

スタンドアロンデバッグでは、MetroNubXというアプリケーションが自動的に起動して、デバッグの処理の仲立ちをするようだ。このアプリケーションが起動することにより、CodeWarriorのIDEから、ターゲットになるアプリケーションに対してステップ動作をしたり、変数の内容を参照するなどの一連のデバッグ作業ができるようになる。しかしながら、筆者のところでは、このMetroNubXが起動しなかった。やはりというか、このMetroNubXのファイルのアクセス権が実行可能になっていので、デバッグが始まらないそうなのだ。
ちなみに、このMetroNubXであるが、Sherockで検索すると、Metrowerks CodeWarrior 6.0フォルダからの相対パスでは、「Metrowerks CodeWarrior:CodeWarrior Plugins:Debuggers」という場所にある。しかしながら、これはパッケージになっているので、実行ファイルの実体はもっと奥にある。そのファイルの実行権限を設定してやらないといけない。つまりは、Terminalを起動してchmodコマンドで実行権限を立てるわけだが、パスが深く、また、人によってはCodeWarriorのインストール位置も違っているだろうから一概に「このコマンドを入力すればOK」というのは示しづらい。やや、回りくどいのだが、次のようにすればMetroNubXの実行権限は確実に設定できるものと思われる。

1. Sherlockを起動する。Dockにあるアイコンをクリックすればよい。
2. ファイル名の検索を行なうが「MetroNubX」を検索する。
3. MetroNubXという名前のアプリケーションを探して、そのパスをウインドウの下側に表示させる。たぶん1つだけだろう。
4. そのMetroNubXのあるDebuggerフォルダのアイコンをダブルクリックして、そのフォルダを開く
 

5. フォルダの内容がウインドウで表示される。
6. MetroNubXこのアイコンをcontrolキーを押しながらクリックする。そして表示されるメニューから「パッケージの内容を表示」ないしは「Show Package Contents」を選択する。
 

7. パッケージの中身がウインドウで表示される。
8. パッケージの中のContents/MacOS/MetroNubXというファイルを見つける。
9. Terminalを起動する。/Applications/Utilitiesにある。
10. コマンドとして「chmod_+x_」とまず入力する(アンダーラインは半角のスペースを意味する。ここではまだreturnキーは押さない)。
11. 手順8で見つけたMetroNubXのファイルのアイコンを、Terminalのウインドウにドラッグ&ドロップする。
 

12. すると、手順10で入力したコマンドの後にMetroNubXへの絶対パスが自動的に入力される。ここで、returnキーを押す。

以上の手順で、MetroNubXに実行権限が設定されるため、デバッグ実行時に自動的に起動され、デバッグができるようになるのである。なお、上記の一連の手順は、CodeWarriorをインストールした時のユーザないしは管理権限のあるユーザでログインした状態で行なわないといけない。

筆者の環境では、これでうまくいった。しかし、この状態でも、デバッグがうまくいかないこともあるそうだ。まず、CodeWarriorのプロジェクトファイルを、Mac OS Xの起動ボリュームにはない状態でないとデバッグがうまくいかないということがあるそうだ。つまり、プロジェクトファイルなどを、Mac OS Xの起動ボリュームとは違うボリュームに置いて作業をするというわけである。また、MetroNubXまでのパスや、プロジェクトまでのパスに日本語のフォルダ名のフォルダがある場合にも、デバッグがうまくいかなかったという場合もあったらしい。さらに、LaunchCFMApp(/System/Library/Frameworks/CarbonCore.frameworkにある)のシンボリックリンクを、/System/Developer/Toolsというフォルダを作ってそこに作成しておくという対処法もあるという。場合によってはこうした点もチェックすると良いだろう。

次にリモートデバッグだが、通常は2台のマシンで行ない、一方で開発してコンパイルした結果を、別のマシンで動かしてデバッグをするとうものである。だが、これを1台で完結させてもよい。いくらか準備が必要ではあるが、おおむねCodeWarrior IDE内で行なうので、その点は気楽に作業ができる。設定のポイントは次の通りだ。


以上のような状況で、CodeWarriorでデバッグ実行を行なうと、リモートデバッグが開始される。コンパイル結果を、実際にはネットワークを経由して実行させるマシンに転送し、リモートダウンロードパスにそのファイルを保存して実行を行なうという次第だ。ただし、TCP/IPがきちんと機能しているのが基本だ。そのあたりのネットワークの設定を中途半端にしていると、TCP/IPの機能が完全には動作しないために、デバッグができないということにもつながるようである。

以上、Mac OS X上でCodeWarriorのデバッグを行なう方法を2通り紹介したが、1台のマシンでデバッグを行なうのであれば、いずれかの方法でかまわない。(以上の情報は、読者の渡辺純一さん、戸松さんより情報をいただいた。また、cw-userのメーリングリストの情報も参考にさせていただいた。この場を借りてお礼を申し上げたい。)

◇About CodeWarrior User’s Mailing List
 http://ueda-net.com/CW/index.html

カテゴリ:開発ツール, SnapXShot制作記


アダプテックのUltra SCSI 160カードのMac OS X PB向けドライバがリリース

アダプテックは、同社のSCSIカードをMac OS X Public Betaで利用できるようにするドライバ「MacOS X Public Beta用PowerDomain 29160N ドライバ バージョン1.0b1J」をリリースした。ベータ版であり、動作保証やサポートはないのではあるが、ドライバ不足が指摘されているMac OS X環境においては明るいニュースと言える。PowerDomain 29160Nは、Ultra SCSI 160に対応したPCIのSCSI拡張カードである。実際に利用する上では、添付のReadMeは熟読しておくのがよいだろう。たとえば、PowerDomain 29160Nに接続したドライブからのブートには現在は対応していことや、128MB超えるメモリを搭載しているとフリーズしたような症状になる場合があるなど、さまざまな制約がある。

関連リンク:PowerDomain29160N MacOS X Public Beta用ドライバ (ベータ版)
カテゴリ:周辺機器, 周辺機器


アップルメニューのトラブルは初期設定ファイルが壊れていることが原因

システムフォルダの「初期設定」フォルダにあるApple Menu Options Prefsというファイルが壊れていれば、Mac OS 9ではアップルメニューの挙動がおかしくなるということがTech Info Libraryで公開されている。アップルメニューの「最近使った〜」の項目に階層メニューが表示されないとか、コントロールパネルの「アップルメニューオプション」を開くとエラーが出るなどは、Apple Menu Options Prefsが壊れているのが原因である。このファイルをいったんシステムフォルダの外に出すなどして、Mac OSを再起動すれば対処できる。

関連リンク:Mac OS 9: Missing Apple Menu Items Could Be Due to Damaged Preferences
カテゴリ:Knowledge Base(旧TIL), Mac OS 9