故意破坏我的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:忘记本地账户开机密码,但记得住PIN码
- Windows下的2017 最新版 MyEclipse启动出现:a java runtim
- 使用window.performance分析web前端性能
- windows – 如何从命令行启动一个ruby脚本只是它的名字?
- 安装程序 – NSIS与Windows游戏资源管理器集成
- 为什么WPF在不同版本的Windows上呈现不同?
- Windows服务 – 编写自动更新Windows服务的最佳做法
- batch-file – 用于在Windows 7中更改屏幕分辨率的批处理文
- 如何配置在Windows上运行的node.js以使用具有多个域名的多个
- .net – 将PCL转换为常规类库