软件编程中的预防与调试策略
1. 预防性编程
1.1 编译器配置
定位和消除与语法相关的错误的最佳方法是将编译器配置为对警告具有最高敏感度。也就是说,要让编译器将警告视为错误,在出现警告时停止构建可执行文件。这种策略可能会让人感到厌烦,但它能促使你更谨慎地编写代码。
1.2 不依赖编译器
虽然编译器能够识别与语法相关的问题,但你不应完全依赖它。编译器只是用于隔离错误的工具,并非最佳或唯一的工具。过去,人们会反复在脑海中追踪程序的执行路径,还会将代码展示给他人阅读。如今,随着个人计算机和高速处理器的出现,很多软件工程师只是快速编写代码,在消除编译器警告后就继续推进项目。但这种做法是错误的,不能认为没有编译器警告就意味着程序没有错误。你需要对尽可能多的执行路径进行单元测试,并让他人审查你的代码。
1.3 构建设置
即使已经向客户部署了发布版本,也要确保有调试版本可用。这样,当客户在凌晨 3 点遇到安装问题时,你可以使用相应的调试版本进行调试。没有什么比处理无法用调试器检查的问题更令人不安的了。
1.4 反编译器的威胁
为了保护知识产权,人们通常会在构建时不包含调试符号。例如,反编译器可以根据程序的调试版本重新生成应用程序的源代码。Java 字节码丰富的符号格式使逆向工程对 Java 应用程序构成了严重威胁。1996 年,Hanpeter van Vliet 开发并发布了第一个著名的 Java 反编译器 Mocha。后来,由于开发者的担忧,他曾将其从网站上移除,但最终在用户投票后又重新发布。此后,聪明的开发者开始采取措施对抗反编译器,而不是试图阻止其传播。
<
超级会员免费看
订阅专栏 解锁全文
1081

被折叠的 条评论
为什么被折叠?



