、、、の3 つのファイルfoo1
がfoo2
ありfoo3
ます。
foo2
で関数をfoo3
呼び出しますfoo1
。
関数のパラメーターとして渡すことなく、呼び出し元のファイル名と行番号を foo1 に検出させようとしています。
これどうやってするの?
、、、の3 つのファイルfoo1
がfoo2
ありfoo3
ます。
foo2
で関数をfoo3
呼び出しますfoo1
。
関数のパラメーターとして渡すことなく、呼び出し元のファイル名と行番号を foo1 に検出させようとしています。
これどうやってするの?
これはプラットフォームとコンパイラに大きく依存し、通常は実行できません。システムには、GNU 関数などの拡張機能が含まれている場合backtrace
があります。
ネイティブプログラムを実行する場合、ファイルと行の概念はもはや根拠がありません。プログラムは、プロセッサへのコマンドのストリームにすぎません。関数の名前、変数、行番号、ファイル名など、すべてがコンパイル中に失われます。
プログラムからデバッグ情報を抽出することは事実上不可能です。そのプログラムは、デバッグ情報を添付するために特別にコンパイルする必要があります。(Visual C ++のように)デバッグ情報が別のファイルに抽出されることもありますが、その情報を抽出するには、そのファイルとその形式を知っている必要があります。そして、デバッグ情報のみを取得します。コンパイルされたコードではありません。
パラメータは行く方法です。