私はgdbとmdbの専門家ではありませんが、知っていることは次のとおりです:-
`(gdb) catch throw`
これは、例外がスロー
されるたびに中断されます mdb に、例外がスローされるたびに中断する同様のコマンドがありますか?
いいえ、これ自体は存在しません。これは、Solaris では、どの C++ ABI が使用されているか (およびどのように例外がスローされるか) がコンパイラやコンパイル オプションに依存するためです。
mdbはそのすべてを知ろうとしているわけではなく、gdbSolaris でもそうではありません (コンパイルすると、catch throw古いスタイルの Sun CC バイナリでも新しいスタイルの Sun CC バイナリでも動作しません)。
あなたの最善の選択肢は、「C++ ABI フック」が何であるか、つまり、どの隠し/内部関数が呼び出されているかを把握し、throw()それらをブレークポイントすることです。または、これらのフックを見つけたり列挙したりしたら、::catchコマンドを実装する独自のモジュールを作成します (mdb拡張可能です -モジュラーデバッガー)。
編集:(恥知らずなプラグイン)私のこの回答も参照してください(C++例外とDTraceに関して、そこにある「隠された」関数名はmdbブレークポイントにも使用できます)。