スローされた例外が特定のキャッチによって処理される場合、スローサイトでC++でコアをダンプする方法はありますかブロック?例外がトップレベルに達したときにg ++で起こることに似たものが欲しいです。 FOO(の呼び出しサイトに到達した任意のFOOからの例外()またはその呼び出し先の)がコア・ダンプを引き起こす場合、例外が特定のキャッチブロックによって処理される場合、C++スローでコアをダンプする方法
try {
bar();
try {
foo();
} catch(...) {
# pragma dump_at_throw_site
}
} catch(...) {
std::cerr << "There was a problem" << std::endl;
}
この方法:たとえば
、私はこのような何かをしたいと思いますをスローサイトに送信すると、誰が例外をスローしてこのレベルに達したのかが分かります。
一方、bar()によってスローされた例外は正常に処理されます。
私は普通の方法は単純にそれをキャッチしないことだと思うし、コンパイラ/環境があなたのためにダンプを行うことを願っています。スローサイトに関する情報は、 'throw'式の後に_instant_を失います。 –
そう、私はスタックが解かれないようにコアダンプのロジックを生成するようにコンパイラに伝えたいのです。これは、呼び出しチェーンのルートまで* catchブロックがない場合に起こることとまったく同じだから可能です。しかし、私の場合は例外をキャッチする外部catchブロックがあります。私は非常に具体的には、例のようにfoo()のスローサイトにコアをダンプし、バーからの例外を無視したいと思います。私はclang ++またはg ++の特定の答えで暮らすことができます。 – Manish
その場合、_throw site_はcatcheeではなく、コアダンプを生成する必要があります。ただし、内部構造にコア・ダンプを生成し、その情報を例外に保存し、例外をスローするオプションもあります。 _キャッチャーはそのダンプ情報で何かをすることができます。 –