晚上十一点半,屏幕直接死机。鼠标在那儿转圈,转得我眼晕。真没灵魂了。我盯着它发愣,算了,认命。长按电源键,硬掐断。第二天一开机,系统甩出一张错误报告,问要不要发诊断数据。我手一滑,拒绝。日子的大崩溃,多半也这德行。不拉警报,也不嚎哭。就是某天早上睁眼,觉得喘气都费劲。哪儿出岔子了?摸不着。只能等彻底趴窝,再去地上捡零件。
后来为了搞明白这电脑咋老抽风,我去翻了本《Windows高级调试》。书里有个词,叫“事后调试”。程序跑着跑着崩了,开发者没法倒带回现场。只能靠系统自动吐出来的故障转储文件,去拼凑它咽气前最后几秒的动静。那书写得真冷。一个感叹号都舍不得给。满屏内存地址、寄存器数值、调用栈。我盯着看,脑仁儿跟着疼。作者反复念叨:调试不是拿放大镜找代码的茬儿,是弄明白它为啥非得往死胡同里撞。话在理。但咱普通人呢?哪懂什么底层逻辑。不过是把日子过成了一堆乱码,硬着头皮往下敲。
以前我特抵触看这种“死前记录”。一翻旧账,就跟认栽似的。咱们都爱把情绪往里咽,把疲惫硬扛,指望睡一觉就能一键重启。可内存泄漏不声不响。它在后台悄悄啃空间。前阵子我电脑就栽在这上面。明明只挂着微信和几个网页,后台一堆进程悄没声息地占地儿。直到某个压根不算事儿的操作,直接抽掉最后一块砖。人呢?不也这样。没处倒的苦水,没歇脚的累,没盘算清的关系。全在后台占着心理内存。你以为自己还在平稳运行。其实早就卡得动不了了。这事儿,未必全是性格毛病。可能就是身体在报警。只是咱们,早就习惯了装瞎。
书里带着人一层层剥开调用栈。从最外头的异常,顺着线头往回捋。一直揪出最初的触发点。这过程急不得。压着火,耐着性子。不能一见报错就急着拿补丁糊弄。得先看清楚数据怎么窜的,线程怎么换的。我慢慢咂摸出点味儿。对付自己的生活,或许也得摆这副架势。不急着给自己扣“矫情”或“脆弱”的帽子。像个调试器似的,把乱成一锅粥的念头全摊桌面上。那条让我整夜睡不着的线索,到底从哪天冒头的?某次没咬紧牙关的妥协?还是某句没交代明白的话?人呐,就是太擅长自我安慰。小裂缝,硬是熬成了大塌方。这招未必全管用。人不是机器。有些情绪泄漏了就是泄漏了。翻旧账,有时候只会让伤口发炎。但硬扛着不查?迟早得炸。
上周收拾书桌,翻出本落灰三年的旧笔记本。硬壳封面都卷边了。里头记着一次要命的汇报。当时字斟句酌,结尾却草草收场。那会儿只顾赶进度。现在重看,才品出急于求成底下的虚。原来有些决定,早就埋好了后来累瘫的雷。调试器没本事替你重写代码。它只管把路径标清楚。生活也这脾气。不替你翻盘。只负责提醒你:那些静默的崩溃,压根不是平地起惊雷。咱们总以为自己是主角。其实呢?不过是系统里一个随时可能被回收的进程。
现在再碰上卡壳的日子,我不再动不动就强制关机了。先停下来。瞅瞅后台到底在跑什么野进程。答案未必能立马让一切恢复原样。但摸清底细,心里那块石头,就算落了地。系统生成转储文件,本就不是为了哭丧。是为了下次跑得更溜。人大概也差不多。能在某个没人的晚上,愿意翻开自己的“错误日志”读上几页。这就挺够了。就算明天还得接着熬。至少知道坑在哪儿。下次,绕着走就是了。