c++ - 在调试 session 期间获取有关匿名异常的数据

标签 c++ visual-studio

所以,这就是我遇到的问题。

void * something = ???;
void (*fun)(void*) = ???;

try
{
    fun(something);
}
catch (...)
{
    assert(false);
}

我的任务是确定断言被触发的原因。不幸的是我没有改变上面的代码。此外,这是在多线程环境中,并且是在程序关闭期间。执行 try/catch 的部分在现实世界的代码中是有目的地解锁的。当我尝试逐步执行该程序时,它突然消失在我面前...我什至无法执行正确的 fun() 调用,更不用说进入它了。

我唯一的办法似乎是在 catch(...) 中放置一个断点并检查其中的任何内容。不幸的是,这并没有告诉我什么,因为我不知道真正的乐趣是什么,也不知道什么是什么。

此时我唯一的希望是,我可以通过某种方式让 Visual Studio 调试器告诉我 ... 是什么,如果我能找出它被抛出的位置,我会非常高兴。它至少不在自动列表中……可能在其他地方?我有什么办法可以在这里取得进步还是我搞砸了?我觉得被搞砸了...

====

更新:有一个外部程序在没有及时关闭时杀死了我的。这就是为什么步进使它消失的原因。与线程无关。

一旦我意识到我能够按照建议打开异常。不幸的是,没有地方可以抛出一个……这是一个访问冲突。正在存储的函数以某种方式受到冲击。

最佳答案

尝试使用在抛出异常时中断执行的 Visual Studio 功能。转到 Visual Studio 主菜单调试 -> 异常并勾选所有异常。

这样,当您的异常被抛出时,visual studio 将停止,您将知道它是什么。

关于c++ - 在调试 session 期间获取有关匿名异常的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14349266/

相关文章:

c++ - 私有(private)继承如何允许我创建对象?

c++ - 如果在堆上定义,QProcess不会终止/终止进程

c++ - sizeof(int) = 1 可以在 32 位或 64 位平台上吗?

c++ - 同一个递归函数为什么VS和Linux的结果不同

c# - 构建成功但发布失败——此版本的Microsoft.AspNetCore.All只兼容netcoreapp2.2目标框架

angular - 无法使用 Visual Studio github 推送 Angular 项目中的更改

c++ - 在 MFC 应用程序中动态创建控件

.net - 如何获取远程网络共享的磁盘使用统计信息?

c++ - 在 Visual Studio 2013 中编译 FFMPEG

c++ - 如何让 VS Code 在调试时不打开终端?