我有一个应用程序,它运行了很长时间然后崩溃了。我需要多次调试才能修复它,不想每次都等待一个小时才能到达发生错误的状态。
所以,我需要一些工具来将整个过程克隆到磁盘上,然后启动它、附加到它并进行调试。
我在(惊喜)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/