LoginSignup
8
0

More than 3 years have passed since last update.

D言語プログラムの--DRTオプション

Posted at

D言語製のプログラムは、メイン関数の呼び出しの事前に、ランタイムでの処理でいくつかの特殊なコマンドライン引数を解釈し、ランタイムの制御を切り替える機能が備わっている。
細かな挙動は調べればわかるが、一覧になっている場所がないので、ここにまとめる。
以下に挙げるもの以外にも隠しオプションが存在しているようだが、ドキュメント化されていないなものは除外した。

--DRT-testmode

単体テストの挙動を変更する。
https://dlang.org/phobos/core_runtime.html#.runModuleUnitTests

例)テスト成功後にメイン関数を実行
myprog --DRT-testmode=run-main

--DRT-testmode=test-or-main

デフォルトの挙動。
単体テストが存在する場合は単体テストを実行して、要約を表示して終了する。(メイン関数は実行されない)
単体テストが存在しない場合は、メイン関数を実行する。

--DRT-testmode=run-main

単体テストがすべて成功した場合、メイン関数を実行する。

--DRT-testmode=test-only

単体テストがすべて成功した場合であっても、メイン関数は実行しない。

--DRT-covopt

カバレッジの挙動を変更する。
https://dlang.org/articles/code_coverage.html

例)カバレッジの出力先を`cov`に指定して、既存の結果にマージする
myprog --DRT-covopt=merge:1 --DRT-covopt=dstpath:cov

--DRT-covopt=merge:<cond>

  • <cond>=1: 現在のカバレッジ結果を既存のレポートにマージ
  • <cond>=0: 既存のレポートを上書きする。

--DRT-covopt=srcpath:<path/to/dir>

<path/to/dir> にはソースファイルを配置するパスを設定する。

--DRT-covopt=dstpath:<path/to/dir>

<path/to/dir> にはカバレッジ結果のレポートを書き込む場所のディレクトリのパスを設定する(この指定先のディレクトリは事前に必ず存在していなければならない)。

--DRT-gcopt

ガベージコレクタの挙動を変更する。
https://dlang.org/spec/garbage.html#gc_config

app "--DRT-gcopt=profile:1 minPoolSize:16" arguments to app

--DRT-gcopt=disable:<cond>

プログラム開始時にGCの有効無効を選択して起動する。

  • <cond>=0: デフォルトです。プログラム開始時にGCが有効な状態で起動する。core.memory.GC.disable()で無効化する。
  • <mode>=1: プログラム開始時にGCが無効な状態で起動する。core.memory.GC.enable()で有効化する。

--DRT-gcopt=profile:<cond>

プログラム終了時にGCの使用状況分析結果を表示するオプション。

  • <cond>=0: デフォルト。結果を表示しない。
  • <cond>=1: 結果を表示します。

--DRT-gcopt=gc:<mode>

GCの実装を選択できます。

  • <mode>=conservative: デフォルト。保守的なGC。
  • <mode>=precise: 正確なGC。
  • <mode>=manual: マニュアル実行。core.memory.GC.collect()でGC実行。

--DRT-gcopt=initReserve:<N>

<N> MBのメモリを予約した状態でプログラムを起動する。

--DRT-gcopt=minPoolSize:<N>

<N> MBのメモリプールサイズを初期化した状態でプログラムを起動する。

--DRT-gcopt=maxPoolSize:<N>

メモリプールサイズの最大を <N> MBで指定する。

--DRT-gcopt=incPoolSize:<N>

メモリプールサイズの増加ステップを <N> MBで指定する。

--DRT-gcopt=parallel:<N>

<N>個の追加スレッドを使用してマーキングを行います。

--DRT-gcopt=heapSizeFactor:<N>

<N>で目標とするヒープサイズと使用メモリの比率を指定する。

--DRT-gcopt=cleanup:<mode>

プログラム終了時に回収されていないのオブジェクトの扱い方を指定する。

  • <mode>=none: 何もしない。
  • <mode>=collect: デフォルト。回収する。
  • <mode>=finalize: デストラクタを呼んでファイナライズする。

--DRT-oncycle

スタティックコンストラクタが循環してしまった場合の挙動を指定できる。
https://dlang.org/spec/module.html#order_of_static_ctor

--DRT-oncycle=abort

デフォルト。プログラムは強制終了する。

--DRT-oncycle=deprecate

abortと同じように動作するが、循環が検出されると、ランタイムは欠陥のある2.072以前のアルゴリズムを使用して、循環が以前に検出されたかどうかを判断する。古いアルゴリズムで循環が検出されなかった場合、実行は継続されますが、非推奨のメッセージが表示される。

--DRT-oncycle=print

検出されたすべての循環を表示し、実行は中止しない。循環が存在する場合、スタティックコンストラクタの順序は実装依存で、有効かどうかは保証されない。

--DRT-oncycle=ignore

実行は中止しない。循環が存在する場合、スタティックコンストラクタの順序は実装依存で、有効かどうかは保証されない。

8
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0