本文介绍了一些常见的优秀调试工具及其亮点。
代码调试时,工具很重要,因为某种程度上,它能决定我们是否可以快速修复代码中的问题。以前,调试颇具挑战。由于缺乏可靠的调试器,开发人员不得不使用一些特殊技巧。
例如,在调试移动应用和 Web 站点时,你需要在桌面电脑上重现问题,然后使用 Chrome 开发者工具或其他类似的工具集。但是,这些技巧并不是那么有效,你必须要在桌面浏览器和移动设备间不断切换。而今天,我们有了一个强大的工具套件,它允许我们就像运行本地应用那样在不同的设备上调试有缺陷的代码。最重要的是,这些远程调试工具不仅解决了调试方面所面临的挑战,还加强了开发团队间的协作。
1. Rookout
Rookout 是一个创新性的工具,它提升了调试过程的敏捷性。它可以调试 serverless 和容器化应用中的 JVM、Node.JS 和 Python 代码。
https://www.rookout.com/
它很棒的一点在于rookout允许用户快速且安全地调试 staging 和生产环境的应用。它能在几秒钟之内提供所有需要的数据,消除了冗长且复杂的调试过程。
Rookout 可以按需提供数据,确保开发人员能理解和调试代码中所存在的问题,无需编码、重新部署和重新启动应用。
借助 Rookout,我们可以远程调试实时的 Electron 应用。Rookout 的可共享接口允许开发者在棘手的 Electron 应用程序中设置不间断的断点(与常规端点类似,只不过这种端点不接触代码,能让我们在不停止或中断应用的情况下,获取代码中的数据)。
https://www.rookout.com/blog/remote-debugging
借助该工具,我们可以完整地看到应用性能,这样就能跟踪问题并开发对应的修复程序。Rookout 可以让这一切变成现实,而且无需在终端用户上安装任何额外软件。
亮点
- 易于上手起步;
- 与 Git 无缝集成;
- 支持与一系列工具的集成,如 Slack、Datadog、Sentry、Sumologic 等;
- 交互跟踪和屏幕共享功能;
- 实时提供全面的调试数据。
2. Visual Studio Code
Visual Studio Code 一直是每个使用.NET 开发人员的首选。它有大量的特性来实现本地和远程调试。借助该工具,我们可以设置条件端点和日志点。
它还允许我们探查变量。对于远程调试,我们需要安装 VS code 远程开发扩展包。这个包有三个扩展,它们提供了启动、监控和加速远程调试循环的所有内容。
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack
亮点
- 免费试用,跨平台;
- 有微软支持的高度活跃的开发社区;
- 集成了 Git 版本控制;
- 用来实现工作流增强的大量扩展和定制选项;
- 非常棒的自动化代码检查和代码颜色高亮。
3. RubyMine
RubyMine 是一个强大的、智能的跨平台 IDE,它允许我们调试 Ruby on Rails、CoffeeScript、JavaScript、CSS、ERB 和 HAML 等,其优秀的内置调试器允许我们轻松地设置断点和定义命中条件。
https://www.jetbrains.com/ruby/
JetBrains 的 RubyMine 提供了两种方式来调试在远程设备上运行的应用。首先,你可以添加远程 Ruby 解释器并配置本地和远程项目文件的映射,然后启动调试会话。
https://www.jetbrains.com/help/ruby/configuring-language-interpreter.html#add_remote_ruby_interpreter
或者,你也能在远程设备上运行应用,然后添加 Ruby 解释器。
完成后,配置文件之间的映射并绑定到运行中的进程上。在调试无法在 IDE 直接启动的应用时,这一点尤为重要。
这个工具另一个优点在于它允许我们同时启动多个调试进程。
亮点
- RubyMine 基于强大的 intelliJ IDEA 平台;
- 对 Ruby 相关的框架和技术提供了良好的支持;
- 自动完成特性非常棒;
- 与 Git 集成地非常好;
- 支持多个插件;
- 与 Rails 无缝集成。
4. PyCharm
PyCharm 是 JetBrains 为 Python 开发的一个健壮的 IDE。这个智能的代码编辑器提供了远程开发的功能,包括在虚拟机和远程主机上运行、测试、调试和部署应用的能力。
调试器提供了多种断点、帧视图、监视、步进模式、远程解释器以及一个调试控制台。
PyCharm 提供了很多令人惊叹的特性,包括复杂场景的自动完成、优秀的重构支持以及与其他工具的无缝集成,如 Django、IPython、Docker、Vagrant 和 Pytest。
除此之外,PyCharm 还是一个非常棒的跨平台开发工具。除了 Python,它还支持 JavaScript、Cython、CoffeeScript、TypeScript、SQL、HTML/CSS、Node.js、AngularJS 等。
亮点
- 出色在 IDE 中连接多数据库进行查询的功能;
- 搜索和安装包非常容易;
- 自动化的代码生成;
- Git 可视化;
- 动态展示代码错误,使其易于修复。
5. GDB
GDB 可以高效地调试另外一台机器上的程序。为了进行远程调试,我们需要在宿主机上运行 GDB 工具。另外,需要在目标系统上运行 gdbserver,这样两个工具就可以通过网络或者 GDB 远程序列化协议的 serial line 进行通信。
GDB/gdbserver 的远程调试有两个配置选项。首先,涉及到使用远程 GDB 自动构建并上传应用代码到远程机器。
第二个选项是在应该使用可执行文件的地方,使用 GDB 的远程调试功能。
亮点
易于使用和跟踪代码中的错误;
跨平台并提供了广泛的语言支持;
高效的核心 dump 分析。
6. Eclipse
Eclipse 是一个适用于 Java 开发的知名 IDE,同时还支持 Python、Ruby、C# 和 PHP 等语言。Eclipse IDE 具有开发和调试的高级特性,使其成为一个全面的工具。
Eclipse 最令人印象深刻的特性之一就是平台的调试视图,它能够展现详细的调试信息,如断点、变量、调用栈以及线程。
借助 Eclipse,我们可以单步执行程序、挂起和恢复线程、计算表达式以及探查表达式的值。在 Eclipse 上管理远程调试配置非常简单直接,这使得该工具在开发者中更受欢迎。
亮点
- 自动化的代码完成;
- 对重构的良好支持;
- 优秀的导航功能;
- 有助于进行语法检查,实现整洁和高效的代码;
- Git 集成。
7. Zend Studio 调试器
Zend Studio 是一个专业的 IDE,支持 PHP 代码的编辑、测试、调试等功能。
https://www.zend.com/downloads/zend-studio-web-debugger
它与 Zend Server 进行了紧密的集成,因此创建了一个完整的 PHP 环境,可以更容易地分析在 staging 和生产环境中探测到的问题。
https://en.wikipedia.org/wiki/Zend_Server
Zend 还提供了一个 PHP 扩展,用户可以将其安装到 Web 服务器上以调试 PHP 脚本。使用 Zend 进行调试非常容易,你只需要打开源码、在项目中设置断点并运行调试会话即可。
Zend 上的远程调试可以通过三种方式实现。第一个方案是使用 Zend Studio 上的 Debug URL 功能。
其次,你可以使用 Zend Studio 中的 Debug as Web Page 功能。最后,还可以使用 Firefox 或 Chrome 上的 Zend 浏览器工具栏。
亮点
- 能够通过简单的几个按键筛选项目文件;
- 高效、快速的平台;
- 广大的社区支持;
- 非常适合构建和调试 PHP 应用;
- 该框架非常灵活。
8. WinPdb
WinPdb 是一个非常棒的 Python 调试器,能够很好地在 Windows、Mac OS 和 Linux 系统上运行。它同时兼容 Python 2.x 和 Python 3.x。
http://winpdb.org/
这个调试工具支持智能断点、命名空间修改、多线程、嵌入式调试以及加密通信。对于远程调试功能来讲,我们需要将 rpdb2.py(Winpdb 的命令行调试器)复制到远程机器上。
完成之后,使用调试器在远程机器启动 Python 脚本。在本地机器上,启动 GUI 并关联要调试的脚本。此时,我们可以使用远程设备脚本的基础名称或完整路径。关于使用 WinPDB 调试 Python 脚本的更多知识,可以参考该教程。
http://winpdb.org/tutorial/WinpdbTutorial.html
亮点
- 支持多线程调试;
- 支持远程调试的加密通信;
- 比 PDB 更快;
- 易于使用的 GUI,支持断点、栈、变量探测等功能。