如何让指定的程序崩溃

为了验证程序崩溃信息的收集和上报机制,需要让程序崩溃。为了达到这个目的,一般的做法是临时在程序中加入引发异常的代码。这种做法只在开发人员自己编译的版本中有效,在正式版本中无法进行验证。另外一种方法是加入一个隐藏开关,但这样会在正式版本中带上调试代码,也不理想。最好的方法是在不修改任何代码的前提下,也能够让程序崩溃。

使用ProcDump捕获程序崩溃信息

当程序崩溃的时候,捕获崩溃信息并进行上报对提升产品质量有很大帮助,它能发现很多在开发和测试阶段发现不了的问题。Windows的WER(Windows Error Reporting)组件在系统级别上提供了捕获崩溃信息的能力,它能够在程序崩溃时生成一个内存转储文件(即dump文件),该文件包含了引发崩溃的异常信息。然而,这个功能仅在Windows Vista SP1及更高的版本中存在,而且它是可配置的,用户可以阻止WER生成dump文件。这意味着我们不能依赖系统来捕获崩溃信息,而是要通过别的途径。

调用boost::filesystem::unique_path可能会失败

假如你的程序需要在指定目录下生成一个唯一的临时文件,而且恰好引入了boost库,那么你可能会选择使用boost::filesystem::unique_path来生成文件名,因为该函数似乎正是为了此目的而生的。但是要小心,该函数在某些环境下可能会失败,抛出“拒绝访问”的异常。

STL中常用的集合操作函数

在实际的编程工作中,经常需要对两个集合进行各种操作,例如取交集、取并集等。在C++中,完全不需要自己来实现这些操作,因为STL已经为我们准备好了这些常用的集合操作函数。

防止boost::asio::deadline_timer在修改系统时间后失效

boost::asio::deadline_timer使用的计量时间是系统时间,因此修改系统时间会影响deadline_timer的行为。例如,调用了expires_from_now设置1分钟超时后,立刻把系统时间改成一天前,那么要过一天时间才会超时。这个特性可能会影响程序功能的正常使用,因此我们通常想要的是一个不会受系统时间影响的定时器。