kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

トラブルシューティング

会議が終わった後、トラブルシューティングに巻き込まれる。彼女はもう2日ほど「ミドルウェアからプロセスが起動しない〜」と悩んでいたようだ。私がいくつか確認したら小一時間で解決。「何故そんなに簡単にわかるの?」とよく聞かれるけれど、何故だろう。トレーニングなんて受けていないのだけれど、やっぱり「作る側の論理」がある程度身に付いているからなんだろうか。
何か起きたとき、検討材料の一つとして、「私だったらこう作るから、ここを調べてみよう」と調査対象に入れる箇所を思い浮かべておく。もちろん当たりはずれはあるけれど、はずれた場合でもまた補正して精度が少し上がる。
たとえばWindowsの場合、ログなどで出るエラーコードはGetLastError()の戻り値であることが結構多い(FormatMessage()使って文字列にしてくれよと思うこともあるけど)。そうすると、WinError.h見ればコメントもあるので、結構わかる。
たとえば183ならFile Already Existsなので、何か作らなくてはならないファイルがもうあるとか。起動時だったら、設定ファイルかログファイルなんだろうとか。
こういうのを何度も何度も見ると「じゃあエラーが出たときはGetLastError()の値を出すとうれしいんだ」ということが自分にもフィードバックされるので、作るときに「GetLastError()の値をログに出力しよう」と思うようになる。みんなうれしいが、場合にもよるので常に出さなくてはならないと言うことではない。