3

次のような C エラー メッセージを照合しようとしています。

gmake[1]: ディレクトリ `/project/swbuild45/ethanl/swfeature_int/pkt' に入ります
...
sw/se/xc/bsd/routing/rib/src/rib_bfd_thrd.c: 関数 'bfd_delete_constituent_session' 内:
sw/se/xc/bsd/routing/rib/src/rib_bfd_thrd.c:3654: エラー: 'bfd_ses' が宣言されていません (この関数で最初に使用)
sw/se/xc/bsd/routing/rib/src/rib_bfd_thrd.c:3654: エラー: (宣言されていない識別子はそれぞれ一度だけ報告されます
sw/se/xc/bsd/routing/rib/src/rib_bfd_thrd.c:3654: エラー: 各関数に表示されます。)
sw/se/xc/bsd/routing/rib/src/rib_bfd_thrd.c:3654: エラー: 予想される ';' 「sion_cst」の前
sw/se/xc/bsd/routing/rib/src/rib_bfd_thrd.c:3663: エラー: 'dbl_dequ' が宣言されていません (この関数で最初に使用)
sw/se/xc/bsd/routing/rib/src/rib_bfd_thrd.c:3663: エラー: 予想される ';' 「うえ」の前に
...
gmake[1]: ディレクトリ `/project/swbuild45/ethanl/swfeature_int/pkt' を残します

これまでのところ、私はこれを思いつきました:

errorformat=%f:%l:\ %m,%Dgmake[%\\d%\\*]:\ Entering\ directory\ `%f',%Xgmake[%\\d%\\*]:\ Leaving\ directory%s

ファイルが開き、最初のエラーが表示:cnされますが、2 番目のエラーに到達するには 4 回入力する必要があります。複数行エラーを設定しようとしましたが、これまでのところエラー文字列が機能しません:

errorformat=%-Z%f:\ %s,%C%f:%l:\ %m,%A%f:\ %m,%Dgmake[%\\d%\\*]:\ Entering\ directory\ `%f',%Xgmake[%\\d%\\*]:\ Leaving\ directory%s

もっと良いアイデアはありますか?

4

2 に答える 2

5

確かに、複数行のエラー フォーマットは面倒なので、エラー フォーマットをすばやく改良する方法が必要です

  1. コンパイル出力をファイルまたは vim バッファーにリダイレクトします (必要に応じて再生できるようにします)。

    $ make &> <your-error-file>
    
  2. vimに移動し、クイックフィックスウィンドウを開きます

    :copen
    
  3. 絞り込みループを開始する

    :set errorformat=<whatever>
    :caddf <your-error-file>
    :cex []
    :set errorformat=<whatever>
    :caddf <your-error-file>
    ...
    

説明:

  1. エラー形式を設定する
  2. エラーファイルを読んでください。あなたはそれを置き換えることができます

    :read <your-error-file>
    :caddbuffer
    

入力を簡単に変更して、さまざまなエラーを検出できます

結果が期待どおりでない場合:

  1. クイックフィックスウィンドウをきれいにする

    :cex []
    

そのコマンドは空のリストをクイックフィックスウィンドウにロードします

あなたの質問について

:set errorformat=%f:%l:\ %trror:\ %m,%Dgmake[%*\\d]:\ Entering\ directory\ `%f',%Xgmake[%*\\d]:\ Leaving\ directory\ `%f',%-G%.%#

十分なはずです

于 2015-06-05T00:41:09.633 に答える
-3

クイックフィックスウィンドウを開くと役立つ場合があります

:copen

次に、エラー リストを視覚的にナビゲートし、関心のあるエラーで <enter> を入力して、問題の行に直接ジャンプできます。

こちらもご覧ください

:help quickfix
于 2013-06-21T04:46:25.510 に答える