Ubuntuで動いた!? BlackJumboDog CoreCLR

まずは無事に、動きました!DNX_TRACE=1から直接問題を検出できたわけではないですが、これを見ることによってどこまで動いているかの見当をつけることができたのは、StackOverflowExceptionのStackTraceを見れるのと見れないの違いくらいあるんじゃないかと思います。

2016-01-09

原因は、Consoleのサイズ取得もしくは変更をしようとしたところにありました。これは、本家Bjdにはない機能でした。GUIを捨てるときにどうしても何か見えるものをCUI上に出しておきたいと思ったのがきっかけです。Trace.Writeでトレースを出力するようにして、それをConsleに出力するためのTracelistenerを実装しています。

GitHub変更点

https://github.com/darkcrash/bjd5/commit/b42c4386866db1f681bbec13b6c20547b02e3320

Windows動かしている分には、サイズ変更できていましたが、SSH経由でそれをやると例外が発生していたようです。TryCatchを入れConsoleに出力したところメッセージが出てきましたので、取得または変更で間違いなさそうです。これもLinuxのGUI上からやったらどうなるかとかはわかりませんが、そんなことするなよって話もありつつ、やるならできない場合を考慮する必要があるようですね。

そもそも、何よ!って人に向けて

MSDN ライブラリ TraceListener クラス

これは、.NetFrameworkに昔からある機能で、Traceクラスを用いて、Writeメソッドやら、WriteLineとかで出したものを、受け取って何らかの処理をする機能を提供するための基底クラスです。ただ、.Net Core としても、Windows (ETW) があるようなので、Linuxでも動くならそっちのほうがよいでしょうね。

スクリーンショット見ると、サーバーは何も起動した形跡がないというオチが待っていました!おそらく、Option.iniを開けてとかその辺じゃあないのだろうかと思っていますが、本当に動くようになるまで戦いは続きます。

それでは、また!