0

私は、C が少しあれば、特定のヘッダー ファイルからどのシンボル (型、プリコンパイラ定義、関数など) が使用されているかを教えてくれるツールを探しています。私は、Solaris から Windows への大きなドライバーの移植を行っていますが、どこから来たのかを理解するのが難しくなってきているので、これは大きな助けになるでしょう。何か案は?

編集: 絶対的な要件ではありませんが、Windows で動作するツールはプラスになります。

編集#2:私がやろうとしていることを明確にするために、移植しようとしているコードベースがあり、多数のヘッダーが含まれています。私が欲しいのは、foo.c が与えられたときに、bar.h からどのシンボルを使用しているかを教えてくれるツールです。

4

4 に答える 4

1

非常に大規模なプロジェクトに対応するKScopeが好きです。

KScope http://img110.imageshack.us/img110/4605/99101zd3.png

于 2008-12-22T19:01:11.530 に答える
1

Linux と Windows の両方で使用します: gvim + ctags + cscope
同じ環境はsolarisでも機能しますが、これはもちろんvimをエディターとして使用することを強制します.emacsはctagsとcscopeの両方でも機能すると確信してます。
vim を試してみたいと思うかもしれません。最初は少し難しいですが、すぐに別の方法では作業できなくなります。最も効率的なエディター (IMHO)。

コメントの再生:

cscope manを調べてください:

...

この関数によって呼び出される関数
を検索: この関数を呼び出す関数を検索:

...

それはまさにあなたが探しているものだと思います...そうでない場合は明確にしてください。

コメント再生 2:

わかりました、今私はあなたを理解しています。私が提案したツールは、コードフローを理解し、特定のシンボルが定義されていることを見つけるのに役立ちますが、探しているものではありません。

あなたが求めているものではありませんが、私たちは話しているので、移植とドライバーの経験があります (無視してかまいません)

コンパイラはあなたの仕事に十分であるようです。元のファイルから始めて、不足している部分をコンパイラに見つけさせると、多くの空のスタブになり、コードがコンパイルされます。

少なくとも最初は、多くのスタブを作成し、元のコードの変更をできるだけ少なくすることをお勧めします。後でそれが機能するようになったら、最適化できます。

移植するドライバーの種類によっては、より複雑になる可能性があります (カーネル ドライバーを想定しています)。Windows と Solaris のサブシステムはそれほど似ていません。私たちは、solaris と windows の両方で動作するドライバーを持っていますが、最初からマルチプラットフォームになるように設計されています。

于 2008-12-22T19:10:51.683 に答える
0

doxygenを試してみてください。グラフや HTML を生成でき、高度なカスタマイズが可能です。

于 2008-12-22T19:14:27.820 に答える
0

emacsetags

そして、make を利用してタグのインデックス作成を実行します。これにより、1 つのコマンドで大規模なプロジェクトのインデックスを作成できます。マスター インデックスと個別のモジュール インデックスを構築することを考えていましたが、まだこれを実装するまでには至っていません...


@ Ilya : 明け方にピストルを撃つことは許されますか?

于 2008-12-25T22:22:02.963 に答える