8

私がオンラインで見つけたすべての cscope チュートリアルでは、cscope の対話モードを使用して、vim や emacs などのエディターでシンボルを検索する方法について説明しています。しかし、ターミナルでコマンドを発行して次のようなことを実行できるはずだと思います

cscope -d -some_options <my symbol>

そして、ncurse UI に入ってそこですべてを行う代わりに、標準出力で結果のリストを表示できるはずです。「唯一の」フロントエンドcbrowserがそのTclTK UIでそのようなことを行うことができるため、これが可能だと思います。しかし、残念ながらコードは私をはるかに超えています。

ただし、この機能に関するドキュメントは見つかりませんでした。

私は夢を見ているのでしょうか、それともこれを行うための文書化されていない方法はありますか?

ありがとう!

アップデート

いくつかの進歩:サブディレクトリ構造を持ついくつかのファイルの小さなプロジェクトを作成した場合。その後、riciの答えはすぐに機能します。より大きなプロジェクト (複雑なフォルダー構造を持つ数千のファイル)。プロジェクト フォルダーのルート (現在の作業ディレクトリでもある) に cscope.out と cscope.files が存在する場合でも、同じコマンドと同じシンボルから何も得られませんでした。コマンドにスケーラビリティの問題があると思われます。コマンドも試しました

cat cscope.files | xargs cscope -d -L1 <symbol> -i

無駄に。

アップデート

非常に奇妙です!他の記号を使ってみました。私が探していた特定のシンボルは、コマンドラインを使用して表示できないことが判明しました。しかし、私が試した他のすべてのシンボルは機能しました。そして cbrowser は、その「失敗した」シンボルを問題なく見つけることができます。とにかく運が悪かっただけです。コマンドラインでこの異常について別の質問をします。

riciの答えを正しいとマークしました。

4

2 に答える 2

21

あなたはおそらくこれを探しています:

cscope -L1<symbol>

-d同様に使用できますが、ファイルを変更している場合は、cscope がデータベースを更新するのに適しています。

-Lは「単一の行指向のコマンドを実行する」ことを意味し、次の数字 (1この場合) は、別のオプションとして記述することもできる特定のコマンドであり、マンページでは紛らわしく「フィールド」と呼んでいます。「フィールド」はインタラクティブな cscope プロンプトによって与えられます。便宜上、数字を追加しました。「これ」は、数字に続くテキストを指します。これはパターンであるため、必ずしも完全な記号を入力する必要はありません。

 0 Find this C symbol:
 1 Find this function definition:
 2 Find functions called by this function:
 3 Find functions calling this function:
 4 Find this text string:
 5 Change this text string:
 6 Find this egrep pattern:
 7 Find this file:
 8 Find files #including this file:
于 2013-02-16T23:21:05.333 に答える