だから、これが私が抱えている問題です。
void * something = ???;
void (*fun)(void*) = ???;
try
{
fun(something);
}
catch (...)
{
assert(false);
}
私は、アサーションが発生する理由を明らかにする任務を負っています。残念ながら、上記のコードを変更することはできません。さらに、これはマルチスレッド環境であり、プログラムのシャットダウン中です。try / catchを実行する部分は、実際のコードではかなり意図的にロック解除されています。プログラムをステップスルーしようとすると、突然消えてしまいます...適切なfun()呼び出しにステップインすることすらできず、ましてやそれに入ることができません。
私の唯一の頼みは、catch(...)にブレークポイントを設定し、そこにあるものをすべて調べることだと思われます。残念ながら、これは私に何も教えてくれません。私は本当に楽しいことや何かが何であるかを知らないからです。
この時点での私の唯一の希望は、Visual Studioデバッガーに話しかけて、それが何で...
あるかを教えてくれることです。それがどこにスローされたかを知ることができれば、私は大喜びします。少なくとも自動リストにはありません...他の場所にある可能性がありますか?ここで進歩を遂げる方法はありますか、それとも私は失敗していますか?ねじれた感じ...
====
更新:時間内にシャットダウンしなかったときに私のものを殺す外部プログラムがありました。そのため、ステッピングによって消えました。スレッドとは何の関係もありませんでした。
提案されたように例外をオンにできることに気づいたら。残念ながら、1つを投げる場所はありませんでした...それはアクセス違反でした。保存されている関数はどういうわけかドキドキします。