2

実行可能ファイルで呼び出されるたびに、関数 func につながるコール スタックを取得しようとしていますが、自動化されている限り、これを取得する方法が遅いか非効率的であるかは気にしません (なぜなら ' func' は何千回もヒットします)。私はdbxにアクセスできるので、次のようなことができると思いました:

(dbx) { when in func { where -q; }; } | awk '{印刷}' > out.txt

しかし、コンソールやファイルにコールスタックの出力が表示されません(関数がヒットしていることを確認しました)。dbx のドキュメントには、「where」はリダイレクトできないコマンドであると記載されていますが、これを行うために使用された回避策があるかどうか疑問に思っています。

4

1 に答える 1

1

一部の dbx コマンドは、シェルのメタ文字を含む引数を受け入れる必要があります。例: print (a < 34)

そのようなコマンドの場合、コマンドの前にリダイレクトを配置できます: (dbx) > /tmp/t print (a < 34)

dbx コマンド ラインの「help redirection」で説明されます。

あなたの例では、「where」コマンドは関数名を引数として受け入れ、(c++ では) < および > 文字を使用できます。したがって、この特別なカテゴリに分類されます。

残念ながら、コマンドの前にパイプ操作を使用する方法はありません。したがって、必要なものを取得するには、一時ファイルを含む別のスキームを使用する必要があります。上記のヘルプ トピックに例があります。

于 2010-09-07T18:37:58.620 に答える