2016.11.19「脳内オセロで脳トレ」で作成した脳トレ用のコマンドラインオセロですが、試してみると使い勝手が悪かったので、いろいろ手直ししようと思います。ついでにバグも修正します。Well”の考え方に基づいて、余分な所をそぎ落とします。最初に目につくこの部分。目的は脳内オセロなので、ボードを可視化する必要はありません。21};よって、こうします。bd[10][10];初期化もなくなったので、memsetも加えます。string.hも必要ですね。memset(bd,0,sizeof(bd));ボードを表示する関数は、いざという時、石の座標がわかるように変更します。34このようになりました。}QがBLACKでしたが、非常にわかりにくいので、BLACKはB、WHITEはWとします。あと、これはバグですが、石が裏返る方向を見つけたら、一方向しか裏返しにしません。以下の77行目でbreakしているからです。全方向のチェックを実行するように修正します。相手の石の上にも置くことができていました。これに関しては、ボードが空かどうかで判定を入れれば良いですね。79if(i==8)continue;修正後のソースです。74}さて、本題である自動テストです。GDBのコマンドファイルを用いてテストします。このようなGDBコマンドファイルとなりました。Enterを求められるのでOFFするおまじないです。実行ファイルで、デバッグするELFを指定します。ブレイクする箇所をscanf実行前にしたいので、60行目にブレイクポイントを設定します。scanfの代わりに値を設定しています。ここをいろいろ変えてテストケースとなります。60行目のscanfをスキップし、61行目からプログラムの実行を再開するためのコマンドです。quitは、GDB自体のquitです。デバッグスクリプトを実行してみます。-xでコマンドファイルを指定します。result.txtこれで、result.txtに結果が格納されました。オセロの棋譜テストケースを作るのは、さすがにマウス操作じゃないと骨が折れるので割愛します。関連記事13-2.GDBの操作sysvbannerの動きをGDBで追う(ステップ実行と変数表示)「sysvbannerの動きをGDBで追う(GDBの起動)」の続きです。mainにブレイクポイントを設定してrunした所から始めます。ステップ実行(ステップオーバー)は、「next」(省略「n」)です。久々に見てしまいました。豪さんにぞっこんのランちゃんが、イッパツマンの正体に気づいてしまった時、イッパツマンは倒されてしまいます。生涯見た中のベストテンに入る面白さでした。時間軸が逆からスタートするってところが、エンジニア心をくすぐります。動画はこのアニメの主題歌です。普通の人が魔法みたいなことができて、できない人が異常とみなされ追放される世界です。主人公は姫様なのに魔法が...13-2.GDBの操作sysvbannerの動きをGDBで追う(GDBの起動)sysvbannerをGDBで動かしながら理解していこうかと思います。ソースを落としてきます。GDBでデバッグするために、Makefileに-gオプションを付けます。孤児の少女フーカは、数十人の不良を一人で相手できるほど喧嘩が強いのですが、トレーニングジムの選手の少女たちには、まったく敵わないのでした。email.ホーム13.ツール操作13-2.GDBの操作スポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。Policyホーム検索トップサイドバースポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。thanksタイトルとURLをコピーしました。