XXXバイト目でエラー発生!!どこだ!!
Vimエディタなら、このような状況でも、そのエラー箇所にあっさりと到達できる。
gotoコマンドを使えば良い。
{Nバイト}go " {Nバイト}の部分は置き換えて、実際には、このようにコマンドを入力する。 80go
コマンドはgotoだが、
ビジュアルモードでもなければ、goまで入力した所で、
Nバイト目の位置までカーソルを移動してくれるだろう。
ところで、このgotoコマンド、私は、以下の理由から、あまり役に立つモノではないと考えていました。
1. 良い設計がされているアプリケーションであれば、エラーの種類から、エラーの発生した箇所を特定できる。 2. エラーが起きたときに、どこで起きたのか詳しく通知してくれる環境も多い。 3. IDEなら、エラーの起きた箇所を表示する機能ぐらい、当然ついている。 4. 同時に発生する他のエラーのメッセージを見て、エラーの箇所を特定できてしまうことが多い。 5. エラーが発生したと言い張る箇所が、エラーの実際に起きている箇所ではない、ことが多い。
最後の5番目、
5. エラーが発生したと言い張る箇所が、エラーの実際に起きている箇所ではない、ことが多い。
は、文法エラーの時などに、エラーの起きたバイト数が、ひとかたまりのコードの先頭か、最後をさしている事が多くて、
実際に、文法を間違えた箇所がわからない、ということです。
そりゃ、正確な場所がわかってたら表示してくれるよね、
正確なエラーの箇所がわかっているのに、バイト数しか表示しないのは、某商用DBぐらいだ。
なので、gotoコマンドの記事は、今まで書く気が無かったんですが、
今日、運良く(?)、gotoコマンドに救われたので、認識を改め、記事を書いておくことにしました。
ERROR 2009-10-11 19:36:50,818 contents.py:49] collect task is failed ['utf8' codec can't decode bytes in position 23330-23332: invalid data].
これは、goto無かったら、追うの大変だったよ。
ありがとう、goto。
覚えてて良かった、goto。