c++ - 如何抛出全部 yield ,养起来开始调试?

标签 c++ debugging visual-studio-2012 process dump

我有一个应用程序,它运行了很长时间然后崩溃了。我需要多次调试才能修复它,不想每次都等待一个小时才能到达发生错误的状态。

所以,我需要一些工具来将整个过程克隆到磁盘上,然后启动它、附加到它并进行调试。

我在(惊喜)Windows 上使用 Visual Studio 2012/2013。

例如:

for (int i = 0; i < 10000; ++i)
{
    if (i == 9999)
        throw MyExcept();
}

我想在第 9998 次迭代时保存应用程序(进程)的状态,以便从中开始调试。

UPD 1:Visual Studio 转储文件并不令人钦佩,因为在 VS 中打开它后我无法获得调试器的所有功能。例如:我不能设置断点,即使是旧的也不起作用。

UPD 2:我还需要有可能复制应用程序的这个保存 session 。

最佳答案

如果我没理解错的话,你想完成两个任务:

1) 在特定条件下中断执行

您需要设置一个带有条件的观察点,或者用 Visual Studio 术语来说就是数据断点。看看这个问题:Can I set a breakpoint when variable is getting a specific value in .NET?

2) 转储核心文件

一旦你设置了观察点并且你的程序到达了那个点,你就可以转储一个核心文件。从那里您可以稍后继续执行。有一个 official FAQ entry有关如何转储和加载核心的条目。

关于c++ - 如何抛出全部 yield ,养起来开始调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25501687/

相关文章:

c++ - 在类对象的 vector 中调用额外的析构函数

java - 在 IntelliJ IDEA 中编辑并继续?

C8051f312微 Controller

unit-testing - 使用 NUnit 测试适配器进行单元测试失败,但使用 VS2012 中的 ReSharper 则不会

html - 修复无效 HTML 的正则表达式

c# - 突出显示方法的导出点

c++ - Windows 7 中的 NUMA 内存区域分配

c++ - 我不明白这个链接错误

c++ - 在下面的程序中可以输入什么来访问数组?

debugging - 使用 GDB 在 Fortran 中调试 MPI 程序(在 MAC 上)