手撸调试器(1) —— 载入 inferior
近几天放假无事可做,便开始翻 Linux 中国的微信公众号找乐子,在他们的推送里,我发现了这篇文章,看完后有了想要自己写一个玩具调试器玩玩的想法。于是就有了这个系列的坑文章。
在正式开始写调试器之前,我们先要了解下 inferior
的概念,在 gdb
里面,inferior
表示的是被调试的东西。它可能是一个进程,可能是运行在一个虚拟机上的内核,也可能是运行在通过各种方式与这台计算机连接起来的远程设备上的进程。我们要写的调试器的作用,就是帮助用户检测程序的错误。我们在本系列文章中实现的调试器大致支持的功能有如下几个:设置断点、暂挂已启动的程序、单步执行代码和检查变量的内容 —— 这几个功能也是我在使用 gdb
时候常用的几个初级功能。
使用正则表达式匹配 3 的倍数
北邮的考试周,与别处是不同的。都是近两周的时间,经常穿插着空挡,预备着可以随时抱佛脚。复习的人,傍午傍晚复习崩溃,每每花四十分钟,拿出手机 —— 这是十年前的事情,现在根本没有这么多时间。 —— 在教室做着,热热的玩了休息;倘肯多花一小时,便可以水一水群,或者看一看知乎,做精神娱乐了,如果歇到八九个小时,那就能回一趟宿舍,但这些学生,多是害怕考试挂科的,大抵没有这样阔绰。只有做学霸的,才踱进教室西边的宿舍里,拿起电脑,慢慢地玩游戏。
我从十七岁起,便在校内的计院当学渣。在考试周周末下午歇息时,看到了一个有趣的网站。便顶着要挂科的压力,好好地把玩了一番这个网站。网站的问题大抵是很常规的正则表达式的问题,但其中的 Triples 很有意思,题意大概如下:
使用正则表达式匹配出全部 3 的倍数。