所以,这就是我遇到的问题。
void * something = ???;
void (*fun)(void*) = ???;
try
{
fun(something);
}
catch (...)
{
assert(false);
}
我的任务是确定断言被解雇的原因。不幸的是,我无法更改上面的代码。此外,这是在多线程环境中,并且在程序关闭期间。执行 try/catch 的部分在现实世界的代码中非常有目的地解锁。当我尝试单步执行程序时,它突然消失在我身上……我什至无法进行正确的 fun() 调用,更不用说进入它了。
我唯一的办法似乎是在 catch(...) 中放置一个断点并检查那里的任何内容。不幸的是,这并没有告诉我什么,因为我不知道真正的乐趣是什么,也不知道什么是什么。
在这一点上,我唯一的希望是我能以某种方式让 Visual Studio 调试器告诉我是什么...
,如果我能找出它被抛出的位置,我会非常高兴。它至少不在自动列表中……可能在其他地方吗?有什么办法可以让我在这里取得进步还是我搞砸了?我感觉被搞砸了...
====
更新:有一个外部程序在没有及时关闭时杀死了我的。这就是为什么踩踏使它消失的原因。与线程无关。
一旦我意识到我能够按照建议打开异常。不幸的是,没有地方可以抛出一个......这是访问冲突。被存储的函数会以某种方式受到冲击。