9cubed
ブログ | Tailwind | Vite | Python | Node.js | Linux | PowerShell | その他 | 将棋ウォーズ | 歌の練習
プログラミング講座

第140回 デバッグ版とリリース版で処理を分岐する方法について

公開日:2018-03-30
更新日:2019-05-11

1. 概要

デバッグ版とリリース版で処理を変える方法について説明しています。処理を変える例としては、デバッグ版では詳細なログ出力を行い、リリース版ではユーザに見せたくないログ出力を行わない、などがあります。

また、ソリューションの構成、プリプロセッサ ディレクティブについても説明しています。

分岐方法

1. プログラムのソース中にフラグを持たせる
2. ファイルにフラグを持たせる
3. コマンドラインの引数を使う
4. プリプロセッサ ディレクティブを使う

2. 動画



3. 分岐方法

1. プログラムのソース中にフラグを持たせる

動画の01:11~
グローバル変数でフラグを保持して分岐させます。
デバッグ版とリリース版を切り替える場合は、毎回ソース中のフラグを変更する必要があり面倒です。

bool isDebug = true;

if (isDebug) {
    //デバッグ時
    MessageBox.Show("デバッグ版です。");
}


2. ファイルにフラグを持たせる

動画の03:23~
1番目の方法のフラグの値を、ファイルなどでソースの外に定義して、動的に読み込んで分岐させます。
リビルドせずに誰でも簡単に変更できますが、それがデメリットになる場合もあります。

debug = on

3. コマンドラインの引数を使う

動画の04:43~
EXEのショートカットを作成し、ショートカットのプロパティの「リンク先」で引数を設定します。そしてそれを実行時に取得して分岐させます。

var args = Environment.GetCommandLineArgs();
//args[0]  EXEのフルパスがデフォルトで入ります
if (args.Count() >= 2) {
    if (args[1] == "1") {
        MessageBox.Show("デバッグ版です。");
    }
}

4. プリプロセッサ ディレクティブを使う

動画の09:53~
プリプロセッサ ディレクティブ(#if、#else、#endif、#define など) と言うコンパイラへの指示を使用して分岐させます。この指示により実行されないソースは、存在しないものとしてコンパイルされます。デバッグ用の詳細なログ出力などの負荷の高い処理を、リリース版ではビルドの段階で削除してしまうことができます。デバッグ版からリリース版の切り替えは、画面上部の構成を「debug」から「release」に変えることで行えます。構成を変更すると、EXEの出力先が変わるので要注意です。

#if DEBUG
    MessageBox.Show("デバッグ版です。");
#else
    MessageBox.Show("リリース版です。");
#endif

YouTube X

新着一覧

  • SCSS のインストールVite
  • Tailwind CSS のプロジェクトの作成Tailwind
  • TypeScriptのプロジェクトの作成Vite
  • Flask のインストールと動作確認Python
  • 簡易Webサーバーの作成Python
  • pipeline で文章の生成Python
  • pipeline で文章の要約Python
  • 音声から文字起こしPython
  • Node.js のインストールNode.js
  • .ps1(PowerShellスクリプト)を実行可能にするPowerShell

アーカイブ

  • 2025/12
  • 2025/11
  • 2025/10
  • 2025/09
  • 2025/08

以前のカテゴリー一覧

  • CakePHP3
  • CentOS7
  • HTML・CSS・JavaScript
  • Haskell
  • JavaScript
  • Kotlin
  • Laravel5
  • PHP
  • Python
  • Ruby
  • RubyOnRails5
  • TypeScript
  • Vue.js
  • Webサーバ講座
  • Webプログラミング講座
  • jQuery
  • linux
  • パソコン講座
  • ブログ
  • プログラミング講座
  • メモ帳作成講座
  • 数学

Copyright © 9cubed. All Rights Reserved.

プライバシーポリシー 利用規約
▲