Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

VisualStudio

VisualStudioの「デバッグモード」と「リリースモード」の違い

投稿日:2022年2月12日 更新日:

 

<目次>

(1) VisualStudioの「デバッグモード」と「リリースモード」の違い
 (1-1) 両者の違い(概要)
 (1-2) 両者の違い(生成物)

(1) VisualStudioの「デバッグモード」と「リリースモード」の違い

(1-1) 両者の違い(概要)

対象言語により細かな部分は異なりますが、おおむね下記のような違いになります。

●デバッグモード

「開発時」に使用するモードで、「デバッグ情報」を出力してデバッグを容易にしています。

(特徴)
・「.exe」の中に「デバッグ情報」を保持しています(例:ソースコード、変数名など)。
・これらを使ってスタックトレース(異常時にスタックの関数呼び出し履歴の中身を出力したもの)を出します

●リリースモード

リリースモードは「性能(パフォーマンス)」に特化しており、「本番リリース時」など最終的な「.exe」や「.dll」を生成する際に使用します。

(特徴)
・「.exe」の中に「デバッグ情報」を保持しない代わりに、サイズが小さくコンパクトな資源が生成できます。
・加えて、デバッグと比較して様々な「最適化のオプション」がONになっており、より「性能」が高くなります。

(図122)デバッグとリリースの違いの一例↓
(表1)
  Debug Release
用途 開発用 リリース用
最適化 なし あり
性能
ブレークポイント 全行に設定可 全行に設定不可
(一部は可能)

(1-2) 両者の違い(生成物)

ビルド時に生成されるファイルの観点でも、両者の違いを見てみます(C++の例)。

以下は、生成される代表的なファイルの概要です。この中では「.idb」は「Debugモード」でのみ生成されました。

(表2)

.pdb ・「Program Database」の略
・デバッガが使用するファイルで、ビルド時にソースコードから生成されます。
・デバッグモード、リリースモード共に生成されます。
.idb ・デバッグ時のみ生成されるファイルで、コンパイラの状態を保持しており、リビルドやコンパイルの処理を最小限に抑えるために使用します。
(例)
20個のcppファイルがあり、初回コンパイルで「.idb」が生成されます。以降、一部を変更して「リビルド」する際に、変更されていないファイルはコンパイルされません。このために「.idb」が使われます。
.obj コンパイラが「.cpp」を元に作る中間ファイル。C++ではこの「.obj」ファイルから「.exe」やライブラリ「.dll」などを生成します。
「.;obj」のサイズは、デバッグモードよりも、リリースモードの方が遥かにサイズが大きい事が多いです。

デバッグ:147 KB
リリース:938 KB

これは、リリースモードではLTCG(最適化機能の1つ)がONになっており、コンパイラがその最適化に必要な情報を多く出力するためです。

(図121)C++の場合、生成物のラインナップ的には「.idb」が差分

Adsense審査用広告コード


Adsense審査用広告コード


-VisualStudio

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Visual StudioとGitHubを連携させる方法(VSのプロジェクトをGit Hubに新規登録)

  <目次> (1) Visual StudioとGitHubを連携させる方法(VSのプロジェクトをGit Hubに新規登録)  (1-1) はじめに  (1-2) Visual Studi …

VisualStudioでAndroidエミュレータ起動時に「Incompatible HAX module version 3,requires minimum version 4」が出た時の対処

<目次> (1) VisualStudioでAndroidエミュレータ起動時に「Incompatible HAX module version 3,requires minimum version 4 …

Visual Studio Communityのインストール方法+後からワークロードを追加する方法も紹介

<目次> (1) Visual Studio Communityのインストール方法  (1-1) 目的  (1-2) 前提条件 (2) インストール手順  (2-1) 資源のダウンロード  (2-2) …

VisualStudioで文字列の検索をソリューション内やプロジェクト内で行う方法

<目次> (1) VisualStudioで文字列の検索をソリューション内やプロジェクト内で行う方法  (1-1) 検索方法   (1-1-1) 「検索と置換」画面を開く   (1-1-2) 検索条件 …

「ブレークポイントは現在の設定ではヒットしません。生成コードが見つからなかったため、ブレークポイントは無視されました」エラーの対処メモ

  <目次> (1) 「ブレークポイントは現在の設定ではヒットしません。生成コードが見つからなかったため、ブレークポイントは無視されました」エラーの対処メモ  (1-1) 発生状況・エラーメ …

  • English (United States)
  • 日本語
Top