私の最後の仕事 (従来の FORTRAN 77 コード) では、どのサブルーチンが他のサブルーチンを呼び出したか、どのファイルでサブルーチンが定義されたか、どの共通ブロックがどの変数を保持しているか、どのサブルーチンがどの共通ブロックを含んでいたかなどをリストした相互参照のファイルがありました。次に、相互参照ファイルを grep し、プログラムの設計に関する情報を提供するシェル スクリプトによって使用されます。
私は今、新しい会社 (C++ コード) にいますが、その機能の一部を置き換える ctags を見つけました。私が最も見逃しているのは、「who.calls」と呼ばれるコマンドです。これは、特定のサブルーチンを呼び出すサブルーチン (つまり、関数またはメソッドを意味します。オブジェクト指向に慣れる必要があります) をリストします。たとえば、サブルーチンがサブルーチンfoo
を呼び出す場合bar
:
>who.calls bar
foo
私の古い会社のプログラミング環境を再設計せずにこれを行う方法について何か提案はありますか? コマンドラインで使用できるスーパー正規表現またはその他の方法を探していますが、まったく異なるアプローチを使用して同じ情報を提供する他の方法を受け入れています。基本的に、デバッガーを実行せずにデバッグ関数スタックを検出したいと考えています。