8

stdoutに出力されたスタック情報をトレースバックするために、いくつかのデバッグライブラリ/ツールを入手する必要があります。

Pythonのトレースバックライブラリがその一例です。

Pythonのトレースバックライブラリに相当するC++は何でしょうか?

4

5 に答える 5

2

これはプラットフォーム固有であり、コードのコンパイル方法によっても異なります。gccを使用してコードをコンパイルする場合-fomit-frame-pointer、有用なバックトレースを取得することは非常に困難であり、通常はヒューリスティックが必要です。そのフラグを使用するライブラリを使用している場合は、問題も発生します。これは、高度に最適化されたライブラリ(nVidiaのOpenGLライブラリなど)でよく使用されます。

これは、より大きなエンジンの一部であるため、自己完結型のソリューションではありませんが、コードは役立ちます。

これには、使用可能な場合はgccを使用したフレームポインタを使用したバックトレースと、使用できない場合はヒューリスティックなバックトレースが含まれます。これにより、トレースに誤ったエントリが含まれる傾向がありますが、クラッシュレポートのバックトレースを取得するには、トレースを完全に失うよりもはるかに優れています。

それらのディレクトリには、そのコードを利用するために調べたい他の関連コードがあります(シンボルルックアップ、シグナル処理)。これらのリンクは良い出発点です。

于 2011-03-04T00:48:53.963 に答える
1

グーグルコアダンパーを試してみてください、それはあなたがそれを必要とするときにあなたにコアダンプを与えるでしょう。

于 2011-03-04T00:39:30.127 に答える
1

現在、 cpp-tracebackがあります。これは、まさにC++用のPythonスタイルのトレースバックです。

于 2013-03-23T21:59:53.003 に答える
0

私は過去にlibunwindで成功しました。私はそれがLinuxでうまく機能することを知っていますが、それが移植可能であると主張しているにもかかわらず、Windowsがどのようであるかはわかりません。

于 2011-03-04T00:50:49.120 に答える
0

クラッシュした場合に「スタックトレース」を取得する場合は、「googlebreakpad」を試してください。

于 2011-03-04T06:24:28.510 に答える