ちりぬるお本舗制作日誌

同人ゲーム・同人コミックその他制作サークル「ちりぬるお本舗」の主催でありプリキュアヲタクの奇々浦ヌル夫がゲーム、ドット絵、その他色々な物を作るブログです

最近開発で困っているちょっとした事1

タイトルの通りです。開発言語はいずれもVB.NET

 

●ヌル参照エラーが発生した場合、どの変数がヌルだったのか正確にわからない

 デバッグ中に次のエラーが出たとします。

 「NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません」 

 ソースコードのどの行でヌル参照エラーが起きたのかまではエラー情報からわかりますし、デバッグ実行中ならどの行で実行が止まったのか見ればすぐわかります。

 しかし、その行で複数の変数が使用されていた場合、どの変数がヌルだったのが原因でエラーになったのかは例外情報を見てもわかりません。

 何か確認する方法はあるのでしょうか・・・(それとも私が例外情報の見方を正しく理解していないだけで、本当は例外情報を読めばわかるのかなあ?)

 

あるプログラムAが別のプログラムBを呼び出している場合のBのデバッグについて

 プログラムA.exeはAの処理の内部で、プログラムB.exeを起動しています。

 そのため、Aをデバッグ実行した場合は、Aのソースコードのどこかの行でブレークすることはできますが

 Aから呼び出されたBのソースコードのどこかの行でブレークしたいと思っても

 ブレークで止めることはできません。Bの処理はデバッグ実行とは無関係で、普通にBを起動したときと同じように動作しているのと同じだからです。

 「じゃあ、AじゃなくてBをデバッグ実行で起動したらいいんじゃないか?」とおっしゃる方は当然いるでしょうが、自分が担当したプログラムではそれもできないのです。なぜなら、AはBを起動するときにコマンドライン引数で、とある変数を渡して起動しているからです。その変数を受け取ってからでないと Bは正しく動作しないので、B単独でデバッグ実行しても、適切な検証ができないのです。

 何かうまい方法はないものか・・・

 

Visual Studio でクラス図をもっともーっと実用的にしたい

 筆者の使用環境:Visual Studio 2010

 Visual Studioにはクラス図生成機能がありますが、これ、ぶっちゃけクラス図と呼ぶのもおこがましいしょぼい図しか生成できません。

 一番足りないと思うのは、「クラスAはクラスBを参照しているという”関連”を線で図示する機能」です。

 今開発してるプログラムで、前任者から引き継いだコードを読み解くのに苦労しています。

「どのクラスがどのクラスを使用しているのか、ソースコードからクラス図を一発で生成できたら便利なのになあ」

 とよく思います。(まあ、すべてのクラス間の関連が線で引かれたらそれはそれで見づらい図になったりするんですが・・・)

 しかし、Visual Studioのかゆい所に手が届かない部分を補強するアドインを見つけました!こちらのModelingPowerToysってやつです!↓ 

note.miyabis.jp

 

でも残念なことに・・・これでもまだ私の目的は満たされなかった・・・何がまずいかというと、このツールは・・・「クラスAはクラスBのリストをフィールドとして持つが、クラスAがクラスBのオブジェクトを直接持っているわけではない」場合には関連の線が引かれないようなのです!!

 

今私が解析したいプログラムは、あるクラスのフィールドが別クラスのリストであることが多いので、これでは役に立たない・・・がんばっていろいろ漁ったのに調べた時間が無駄になってしまった・・・