2

以下のような C++ コードで問題が発生しています。

try {

        /* some code here */

} catch(...) {

        /* ... */
}

gdb を使用して try ブロックに含まれるコードをステップ実行していますが、ある時点で何かがスローされています。スローする関数呼び出しはライブラリからのものであり、それに関連付けられたデバッグ シンボルがないため、それが何であるかを実際に知ることはできません。

gdb が catch ブロックで何がキャッチされているかを判断する方法はありますか?

4

1 に答える 1

1

を試すことができcall current_exception()ます。これは、プラットフォームでサポートされている場合exception_ptr、現在の例外に対して を返します。ただし、 exception_ptr に何が含まれているかは正確には指定されていませんが、x何かを理解できるかどうかを調べるために調べることができます。

一部のレジスタに現在の例外データが含まれている可能性もありますが、使用しているアーキテクチャを指定していません。

于 2012-07-25T14:49:57.683 に答える