Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么样的碰撞条件会导致碰撞转储?_C++_Crash Dumps - Fatal编程技术网

C++ 什么样的碰撞条件会导致碰撞转储?

C++ 什么样的碰撞条件会导致碰撞转储?,c++,crash-dumps,C++,Crash Dumps,我在我的Windows10笔记本电脑上安装了一个,但令我惊讶的是,Windows在何时收集崩溃转储时变得变化无常。我做了一个C++控制台应用程序,作为一个发布版本,并尝试用两种不同的方式故意破坏应用程序: 15 throw std::无效的_参数(“Oops!”) float foo=1.0/0.0 前两次尝试确实会导致生成崩溃转储文件。但是,简单地除以零会导致应用程序以静默方式退出…没有崩溃转储 我还发现,如果我对同一个应用程序进行调试构建,我仍然不会得到被零除的转储,但前两个异常会导致弹

我在我的Windows10笔记本电脑上安装了一个,但令我惊讶的是,Windows在何时收集崩溃转储时变得变化无常。我做了一个C++控制台应用程序,作为一个发布版本,并尝试用两种不同的方式故意破坏应用程序:

  • 15
  • throw std::无效的_参数(“Oops!”)
  • float foo=1.0/0.0
前两次尝试确实会导致生成崩溃转储文件。但是,简单地除以零会导致应用程序以静默方式退出…没有崩溃转储

我还发现,如果我对同一个应用程序进行调试构建,我仍然不会得到被零除的转储,但前两个异常会导致弹出一个CRT对话框,其中显示“中止、重试或忽略”。在这种情况下,只有在我选择“重试”时,它才会创建崩溃转储。我希望对此有一个解释

但我真正的问题是试图理解为什么我不能从除以零得到崩溃转储。我是否可以更改配置以修复此问题?例如,我可以访问工具BugTrap。也许我不需要配置WER,而应该配置BugTrap…也许它可以在除零事件中捕获崩溃转储

更新
佩布卡克。我的浮点数被零除并没有导致任何错误。如果我想从除以零得到崩溃,我需要(1)将它们转换成整数,(2)尝试打印出结果。我怀疑后一个“第2部分”是代码优化的结果……如果除法运算的结果未被使用,那么它就不会被执行。我没有其他解释。

从您问题中的链接——“执行自定义崩溃报告的应用程序,包括.NET应用程序,不受此功能支持。”除零是未定义的行为。对于Windows,我认为如果你摆弄CPU标志,你可以强迫它在除法为0时崩溃(但我已经很久没有这样做了)。我很惊讶浮点除法为0结束你的程序。通常它只会将无穷大赋给
foo
变量。。我记得很久以前,我不得不调试一个程序,该程序在除法0时崩溃,这一切都是由打印机驱动程序在CPU上设置浮点标志引起的(我不会提及打印机公司)。。如果要确保程序在除以0时崩溃,请查看设置必要的标志是否有效。从问题中的链接-“此功能不支持执行自定义崩溃报告的应用程序,包括.NET应用程序。”除以0是未定义的行为。对于Windows,我认为如果你摆弄CPU标志,你可以强迫它在除法为0时崩溃(但我已经很久没有这样做了)。我很惊讶浮点除法为0结束你的程序。通常它只会将无穷大赋给
foo
变量。。我记得很久以前,我不得不调试一个程序,该程序在除法0时崩溃,这一切都是由打印机驱动程序在CPU上设置浮点标志引起的(我不会提及打印机公司)。。如果要确保程序在除以0时崩溃,请查看设置必要的标志是否有效。