举个例子:在windows系统中,有用户“Farmer John"(注意中间有空格分隔),在用户根目录下有用户的头像图片”C:UsersFarmer Johnphoto.jpg“。现在有一对图片操作的库函数foo,foo的输入参数即为图片路径,由于foo的实现不完善导致如果路径中包含空格符的话会有bug(比如遇到空格截断),但用户又不能修改该函数,更不可能为了这个bug而去修改用户名,此时的一个很好的hack方式就是用mklink来fix包含空格的那个目录或者文件。对于现在这个bug,可以这么解决:
cd "C:Users"
mklink /D Farmer-John "Farmer John"
注意对于一些权限较高的目录可能需要在admin模式下的cmd才能完成。此时会出现一个叫”Farmer-John“的symbolic link的目录,此时当你向foo传入”C:UsersFarmer-Johnphoto.jpg“时,现在为合法输入,该路径其实等价地指向”C:UsersFarmer Johnphoto.jpg“的实际地址,bug就hacked了。
这个bug告诉我们两点:
1. 论测试的重要性
2. 开发目录下的所有目录和文件命名尽可能简单,比如只包含英文字母和数字,以免造成不必要的麻烦。