摘要:
(1) overview.上图简述了整个breakpad工作的基本流程: 1)程序编译完后,先用工具事先把程序的相关debug信息dump下来(to symbol file)。 这些dump下来的东西包含了一些符号与源码的相关信息,如各个符号在程序中对应的地址等。 有了它,breadpad经过相关处理,使得用户通过一个地址就能找出这个地址对应的是变量,还是函数等。 2)把符号dump出来后,程序就可以pstrip一下,把debug信息去除,然后发布程序。 3)程序在运行的过程中,如果发生了崩溃,程序就会进入breakpad的异常处理,这个异常处理会把当前程序的上下文,栈的内容,线程的信息等.. 阅读全文
摘要:
求一个数组中,和最大的子数组,是一个比较经典的题目,《算法导论》中有一个用分治的经典解法,时间复杂度可以做到O(nlgn).《编程之美》,《编程玑珠》中都有讨论这个问题,其中一个动态规划的做法非常精巧,思路很赞,时间复杂度也优化到了O(n). 上面提到的两种解法对分治法,动态规划很有启发性,是非常好的练习题目。(1)分治法: 关键的思想在于把大题目转化为对多个小题目的求解。 考虑,如果我们把数组arr[],分成大小相等的两半:arr_a与arr_b,那么当前数组的最大子和sub, 只有三种可能: 1)sub 完全在 arr_a中。 2)sub 完全在arr_b中。 3)sub 横跨arr... 阅读全文