故意破坏我的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中的objdump和Dumpbin有什么区别?
- Microsoft Dynamics(Navision)vs C#.NET
- Microsoft SQL Server 不同系统版本支持和下载说明
- windows-8 – 如何向可以定位多个平台的商店提交应用程序?
- .net – Windows Azure Web角色缓存(预览)“挂起”使模拟器
- xaml – Windows 8 Metro:实施验证
- windows远程桌面连接centos7桌面显示,安装xdrp
- winapi – win32 CreateFile2 api调用的目的是什么?
- office365 – 使用Microsoft Graph API显示即将到来的Offic
- 区别Windows Azure和GoDaddy
