-
Notifications
You must be signed in to change notification settings - Fork 0
変数の Dump 方法
Web上で変数の中身を出力する手順です。
対象アプリケーションの Web.config に以下の設定を追加します。
<system.webServer>
<modules>
<add name="DebugHttp" type="Sdx.Web.HttpModule" />
</modules>
</system.webServer>
<system.web>
<httpModules>
<add name="DebugHttp" type="Sdx.Web.HttpModule" />
</httpModules>
</system.web>
※既存の要素がある場合はその中に追加します。
sdx_debug_mode = 1 を cookie に追加します。 Debug をよく使う場合は cookie に有効期限を設定しておくといいです。
ブラウザのコンソールを開いて、以下のコードを実行します。
//2020年6月いっぱいを有効期限にしたい場合の例
document.cookie='sdx_debug_mode=1; expires='+new Date(2020, 6).toUTCString();
これで準備は完了です。
Sdx.Context.Current.Debug.Log()
の引数に出力したい変数を渡して実行します。
//出力したい変数
var dic = new Dictionary<string, string>() { { "foo", "bar" } };
//出力させる
Sdx.Context.Current.Debug.Log(dic);
Webページの最下部に以下のような出力が行われます。
[0.00000000/12.33980599 sec] Debug test now.
System.Collections.Generic.Dictionary`2(1)
foo : String(3) bar
Webページ上には表示させたくない、という場合にはDumpの内容をファイルに出力することも可能です。
//出力したい変数
var str = "ブラウザに表示されたら困る文字列";
//任意のパスに出力結果のファイルが生成されます
Sdx.Diagnostics.Debug.DumpToFile(str, "/path/to/project/test.txt");
上記のようにパスの指定を行った場合、C:\path\to\project\test.txt
に出力されます
test.txt の中身はこのようになります。
[2016-06-30 18:49:23] String(16) ブラウザに表示されたら困る文字列
外部からのアクセスが可能なディレクトリ以外にファイル出力しようとすると例外になるのでご注意ください。
(例えば C:\windows
配下などはOSの制約でファイルの書き換え等ができません。)
以下のコードを使うと出力に使われる文字列データだけを取得することができます。
var str = "何の変哲もない文字列";
var dump = Sdx.Diagnostics.Debug.Dump(str);// => String(10) 何の変哲もない文字列
これは以下のような状況で使えます。 例えば、別ページに遷移する処理が組み込まれたページで開発作業を行う場合、Webページ上に出力しても別ページに遷移してしまい、せっかく出力した内容を見ることができません。 その場合、別ページに遷移する前に例外を投げるようにして、例外のメッセージとしてDump出力結果を渡すと、このような状況でもdumpすることが可能です。
var str = "何の変哲もない文字列";
throw new Exception(Sdx.Diagnostics.Debug.Dump(str));//リダイレクト前にページでdump結果を確認できる
前述のファイルに出力する方法でもDump可能ですが、Web上でリダイレクト前に変数の中身を確認してみたい場合はお試しください。
デバックモードをON・OFFするブックマークレットです。
javascript:(function(){var targetCookie="sdx_debug_mode=1";string=document.cookie;booleanCheck=string.indexOf("sdx_debug_mode",0);if(booleanCheck==-1){/*cookie追加*/document.cookie=targetCookie+";";}else{/*cookie削除*/date=new Date();date.setTime(0);document.cookie=targetCookie+";expires="+date.toGMTString();}})();
javascript:(function(){
var targetCookie = "sdx_debug_mode=1;";
string = document.cookie;
booleanCheck = string.indexOf("sdx_debug_mode",0);
if(booleanCheck == -1){
/*cookie追加*/
document.cookie= targetCookie;
}else{
/*cookie削除*/
date = new Date();
date.setTime(0);
document.cookie = targetCookie + " expires=" + date.toGMTString();
}
})();
Sdx.Diagnostics.Debug.Console()
メソッドを使うと、コンソールアプリの実行時に
プロンプト上に変数の中身などを出力できます。(出力結果は Sdx.Diagnostics.Debug.Dump()
と同じです。)
Sdx.Diagnostics.Debug の Outプロパティに Console.Out を設定するとコンソールに出力し、Sdx.Diagnostics.DebugHtmlWriter を設定すると、WEBページのデバッグディスプレイに出力します。
- 設定例