故意破坏我的Windows应用程序的最佳方法是什么?
我已经在我的Qt应用程序的
Windows版本中添加了一个迷你核心转储功能(通过__try / __ except和MiniDumpWriteDump()),这样如果/当我的应用程序崩溃时,.dmp文件将被写入磁盘让我以后查看和调试.
这非常有效,但是对于测试,我希望有一个已知可靠的方法来使我的程序崩溃.例如,GUI中可能存在“立即崩溃”按钮,当用户单击它时,它将导致应用程序故意崩溃. 当然,一种方法是这样的: int * badPointer = NULL; *badPointer = 666; 这对我有用,但我不喜欢这种方法,因为它依赖于未定义的行为 – 特别是,C标准不要求上面的代码导致崩溃,所以它是可能的(从语言 – 律师的角度来看) )当上面的代码执行时,编译器的某些未来版本不会崩溃. 作为一种更“官方”的方法,我试过这个: abort(); …它会终止程序,但它不会导致Windows结构化异常触发MiniCrashDump处理程序,因此不会写入.dmp文件. 我的问题是,是否有一个“官方正确的方式”来破坏我的计划?我看到Windows API有一个我可以调用的RaiseException()函数,但我不确定它应该是什么正确的参数.这是要走的路,还是有一些更具体的电话,我会更好用?
如果您知道自己在Windows上运行,则取消引用空指针以引发访问冲突是完全正常的 – Windows提供比C语言更强的保证. C表示取消引用空指针是Undefined Behavior,但Windows将其定义为访问冲突(只要C被强制转换就完全可以接受,因为访问冲突是未定义行为的一种可能结果).
从Managing Virtual Memory开始:
内存的第一页始终映射为PAGE_NOACCESS,因此如果您尝试读取或写入空指针(或空指针的/ -64 KB内的任何指针),您将始终引发访问冲突异常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-server-2008 – 在Outlook中几分钟后自动删除电子邮
- windows-phone-8 – windows phone 8 Emulator无效指针错误
- win10 配置 hadoop-2.7.2
- _stdcallthunk
- 常用Windows命令、常用 Cmd命令
- windows-7 – 将用户升级到Win7.现在在保存文件或打开附件时
- pywin32处理表格
- windows – 简单的Win GUI – 我应该尝试使用PowerShell还是
- 在Windows Phone 7上使用WCF的System.UnsupportedException
- WIN7 下安装 SQL Server 2000 兼容性问题
- 尝试在Windows上使用Gulp调整图像大小时出错EOF
- audio – Win RT中的音乐效果
- windows-vista – 为什么要使用64位操作系统?
- 使用System.Windows.Forms破坏Mono C#代码
- windows-store-apps – 错误CS0117:’System.Ty
- xaml – ScrollViewer中是否可以有非滚动行?
- 缓存 – 缓存DataContractSerializer实例是一个好
- windows-server-2008-r2 – 是否可以在不停机的情
- Windows开发平台和Linux测试平台之间的最佳接口方
- Windows – 使用JDK 7构建Cocoon 2.1.0失败:com