ページ 1 / 1
ReleaseとDebugの違い
Posted: 2015年9月06日(日) 10:16
by DXライブラリファン
VC++のプロジェクトを作成する際にReleaseとDebugごとの設定をすると思います。これに違いはあるんでしょうか?どっちもデバッグと関係あることなんですか?そこらへんがよくわかりません。
Re: ReleaseとDebugの違い
Posted: 2015年9月06日(日) 12:08
by Dixq (管理人)
下の画像の部分の赤矢印部分をクリックしてブレイクポイントを張ってください。

- 無題.png (5.99 KiB) 閲覧数: 17001 回
そしてF5で開始してください。
指定したブレイクポイントの場所でプログラムがとまります。
その時の変数の中身を見ることが出来ます。
ですのでデバッグに有効なのです。
その代り冗長的なデータが入るので重いです。
リリースする時はその名の通り冗長的なデータの無いReleaseを指定して軽い実行ファイルを作って配布します。
Re: ReleaseとDebugの違い
Posted: 2015年9月07日(月) 19:12
by DXライブラリファン
管理人さん返事ありがとうございます!
てことは、デバッグでコンパイルしたゲームは配布したらマナー違反ってことですか?
Re: ReleaseとDebugの違い
Posted: 2015年9月07日(月) 19:24
by Dixq (管理人)
マナー違反ではないですが、容量は多いし処理は重いファイルをわざわざ配布する必要なくないですか?
後こんな所から情報漏えいする可能性もあります。
http://dixq.net/g/63.html
Re: ReleaseとDebugの違い
Posted: 2015年9月07日(月) 19:40
by softya(ソフト屋)
VisualC++の場合、Debugビルド版の配布はライセンス違反です。
それと一般の方は、Debugビルド版は実行できません。
Debugビルド版を実行するには一致するバージョンのVisualC++がインストールされている必要性があります。
Re: ReleaseとDebugの違い
Posted: 2015年9月08日(火) 21:28
by DXライブラリファン
皆さんご回答ありがとうございます!
softyaさん、といことは、開発時もDebugの設定はしなくてもいいってことですか?
プロジェクト立ち上げるたびに、すべての構成をDebugやらReleaseにしてそれぞれ
設定するけど、Debugを使わないならDebugの設定はなくてOKですか?
Re: ReleaseとDebugの違い
Posted: 2015年9月08日(火) 21:38
by softya(ソフト屋)
開発中にデバッガ機能を一切使わないなら、そういう選択肢もありはありです。
私は不便だからデバッグビルドでデバッガ使いますね。その方が効率よくデバッグできますから。
リリースビルドだとブレークポイントも、ブレークしての変数確認も、スタックトレースも、異常終了時のソースの位置の確認も出来ないのけど不便じゃ無いのなら。
VisualC++の意味が無い気もしますが。
Re: ReleaseとDebugの違い
Posted: 2015年9月08日(火) 22:17
by Dixq (管理人)
何故そんなに設定をためらうのでしょうか・・?
開発中はDebug、リリース時はReleaseの設定にするのが普通です。
Re: ReleaseとDebugの違い
Posted: 2015年9月08日(火) 22:28
by DXライブラリファン
管理人さん、だってDebugの恩恵を受けたことがないからです…
リリースビルドなんて知らなかったです、いつもF5で実行、F7で中断
これってデバッグモードですよね?かなり重くて
コンパイルから実行に至るまで1分くらいかかるときがあります。
Re: ReleaseとDebugの違い
Posted: 2015年9月08日(火) 22:37
by softya(ソフト屋)
面倒だと思われているのなら、Debug設定よりも、ゲームのデータの作成、バグ取り、テスト、バランス調整はもっと面倒くさいと思いますよ。
> コンパイルから実行に至るまで1分くらいかかるときがあります。
規模次第ですが、普通じゃないかと思います。
まぁ、SSDとか高速CPUとかで武装すれば高速化は出来ますが予算が・・・。
RAMディスクにコンパイラ環境を構築すると言う荒業もありますが。
VisualC++2008ぐらい古いのにすれば高速化もできますね。
それでも我慢できなければgccなどに変えるのも方法です。
ちなみに私の使っているCocos2d-xライブラリだとそれ以上かかります。フルビルドは30分以上。
>これってデバッグモードですよね?かなり重くて
>コンパイルから実行に至るまで1分くらいかかるときがあります。
ところでリリースビルドなら高速化出来ましたか?
あんまり変わらないとかありません?
【補足】
リリースビルドは、コンパイルを高速化するのではなく実行時の高速化・実行ファイルのスリム化です。
場合によってはデバッグビルドよりビルドが遅くなることも。
なので確認してみてください。
【補足の補足】
>いつもF5で実行、F7で中断
>これってデバッグモードですよね?かなり重くて
それは、デバッグビルド・リリースビルド共に同じ操作です。
デバッグビルド・リリースビルドに切り替えは構成マネージャなどを使います。
Re: ReleaseとDebugの違い
Posted: 2015年9月08日(火) 23:10
by DXライブラリ
softyaさん、F5は別にデバッグってわけじゃないんですね…
色んな事がごっちゃになってました。リリースとデバッグの切り替えって
どうするかまた調べます。ありがとうございました。
Re: ReleaseとDebugの違い
Posted: 2015年9月08日(火) 23:12
by Dixq (管理人)
> 管理人さん、だってDebugの恩恵を受けたことがないからです…
じゃVC++の使い方を学びましょう。
手始めにブレイクポイントの使い方覚えるだけでもデバッグに雲泥の差が生じます。
上で言った通り、実行時に止めたいポイントでブレイクポイントを張って変数の中身をみてみてください。
不具合が出ている時は変数の中身をリアルタイムにみられることは非常に大きいです。
Re: ReleaseとDebugの違い
Posted: 2015年9月09日(水) 20:41
by DXライブラリファン
皆さんご回答ありがとうございます。Debugモード使ってみようと思います。
Debugモードを使うとコンパイルエラーが綺麗に取れたりするんですか?一気にコンパイルエラーが消えるのはうれしいです。
Re: ReleaseとDebugの違い
Posted: 2015年9月09日(水) 21:52
by softya(ソフト屋)
DXライブラリファン さんが書きました:皆さんご回答ありがとうございます。Debugモード使ってみようと思います。
Debugモードを使うとコンパイルエラーが綺麗に取れたりするんですか?一気にコンパイルエラーが消えるのはうれしいです。
それも勘違いです。
Debugモードでデバッガーを使うのは、コンパイルエラーではなく、コンパイル以外の実行時エラー、論理エラーを無くすためのものです。
市販ゲームでも良くあるでしょう。開発会社が取り損なったなぞのバグが。
開発中は致命的なバグや謎のバグがもっとたくさん発生します。
それを取るために役立つのがデバッガーです。
【補足】
開発において、コンパイルエラーは取れるのが当たり前で、それよりも長い期間テスト・デバッグに費やします。
プログラムを書いている時間より遥かに長い時間です。
その時間をできるだけ短くするためにデバッガーを使います。
Re: ReleaseとDebugの違い
Posted: 2015年9月09日(水) 22:42
by Dixq (管理人)
> Debugモードを使うとコンパイルエラーが綺麗に取れたりするんですか?一気にコンパイルエラーが消えるのはうれしいです。
根本的に勘違いがありますね・・・。
あくまで間違いの発見を助けてくれるだけで直すのは自分です。
まぁC#やJavaの優れたIDEを使えばコンパイルエラー部分オンマウスクリックである程度自動的に直っていくってのはありますが。
手始めにブレイクポイントを使ってみてくださいと書きましたがやってみて頂けましたか?
Re: ReleaseとDebugの違い
Posted: 2015年9月10日(木) 18:59
by DXライブラリファン
>softyaさん
コンパイルエラーを取るためにデバッグモードはないんですか…
ますます利便性が分からなくなってきました。
てことはコンパイル時間の大小もリリースモードとデバッグモードで変わりないってことですか?
>Dixq (管理人) さん
ブレイクポイント試してみました。
ただあまり用途が分かりません…
プログラムを止めるなら、wait系の関数でよくないですか?
変なタイミングでプログラムを止めて悪影響とかないのかも心配です。
Re: ReleaseとDebugの違い
Posted: 2015年9月10日(木) 19:48
by softya(ソフト屋)
> てことはコンパイル時間の大小もリリースモードとデバッグモードで変わりないってことですか?
環境・状況次第です。
大抵はファイルの大きいデバッグビルドのほうが僅かに長いかもしれません。
ただ、コンパイル負荷が大きいソースコードの場合はリリースビルドのほうが長いかもしれません。
> プログラムを止めるなら、wait系の関数でよくないですか?
処理中の変数の値やプログラムの何処を処理しているかを確認するために止めるでwaitでは意味が無いですね。
> 変なタイミングでプログラムを止めて悪影響とかないのかも心配です。
そういう場合はバグが有る可能性が高いです。
まぁ、格闘ゲームのコマンド入力中にブレークで止められるのは、ちょっとタイミング的にマズイですが。
Re: ReleaseとDebugの違い
Posted: 2015年9月10日(木) 21:43
by Dixq (管理人)
やはりブレイクポイントの意味が通じていないような気がします・・。
プログラムを止めるために使うのではなく、処理の過程や変数の値がリアルタイムに表示される様子を確認するためのものです。
ブレイクポイントを使って変数の中身を見てみましたか?
一行ずつ処理を進めてみましたか?
Re: ReleaseとDebugの違い
Posted: 2015年9月11日(金) 14:03
by Tatu
1.DebugとReleaseの違い
Debug:変数の中身を見れる。配布はライセンス違反。
Release:最適化され、配布に適した実行ファイルができる。
2.切り替える方法
上のツールバーにあるDebug(またはRelease)をクリックして選択。
3.設定が面倒
設定だけしたプロジェクトをどこかに保存しておき、
次からはそのプロジェクトをコピーして使えばいいでしょう。
4.変数の中身を見る方法
Debugに設定し、ステップ実行かブレイクポイントを使用して処理を止めるかして、
ソースコードにある変数にマウスポインタを重ねてください。
デバッグ機能を使う必要がないのなら無理に使用することはありません。
実行時におかしな動きをしてその解決にデバッグ機能が必要だと思ったら使えばいいだけです。
Re: ReleaseとDebugの違い
Posted: 2015年9月11日(金) 14:53
by usao
debugとreleaseに共通する設定については
プロジェクトのプロパティで「すべての構成」を選択すればdebug構成とrelease構成とに同時に設定できますから,
その後で,debugとreleaseとで異なる設定だけを個別に行えば,面倒くささを少しは軽減できるかもしれません.

- クリップボード01.png (3.69 KiB) 閲覧数: 16177 回
Re: ReleaseとDebugの違い
Posted: 2015年9月11日(金) 22:35
by DXライブラリファン
ではゲームを作って配布するときはリリースモードでいいんですか?DXライブラリが入ってないPCでも動作できるようにするにはどうしたらいいですか?
Re: ReleaseとDebugの違い
Posted: 2015年9月11日(金) 22:58
by softya(ソフト屋)
DXライブラリファン さんが書きました:ではゲームを作って配布するときはリリースモードでいいんですか?DXライブラリが入ってないPCでも動作できるようにするにはどうしたらいいですか?
開発中はデバッグモードかリリースモード、配布時にはリリースモードです。
DXライブラリはexeにリンク(結合)されているので、配布時に気にする必要はありまあせん。
リリースは解き放つの意味で、世に解き放つためのものです。
配布の方法は「ゲームプログラミングの館」の
http://dixq.net/g/
h.7 作ったゲームを公開するには?(1)
h.8 作ったゲームを公開するには?(2)
を参考にして下さい。