写点什么

2020 年最强大的远程调试工具

  • 2020-05-21
  • 本文字数:2829 字

    阅读完需:约 9 分钟

2020年最强大的远程调试工具


本文最初发表于freeCodeCamp网站,经作者 Anton Lawrence 授权,由 InfoQ 中文站翻译分享。


代码调试时,工具很重要,因为某种程度上,它能决定我们是否可以快速修复代码中的问题。以前,调试颇具挑战。由于缺乏可靠的调试器,开发人员不得不使用一些特殊技巧。


例如,在调试移动应用和 Web 站点时,你需要在桌面电脑上重现问题,然后使用 Chrome 开发者工具或其他类似的工具集。但是,这些技巧并不是那么有效,你必须要在桌面浏览器和移动设备间不断切换。而今天,我们有了一个强大的工具套件,它允许我们就像运行本地应用那样在不同的设备上调试有缺陷的代码。最重要的是,这些远程调试工具不仅解决了调试方面所面临的挑战,还加强了开发团队间的协作。

1.Rookout


Rookout是一个创新性的工具,它提升了调试过程的敏捷性。它可以调试 serverless 和容器化应用中的 JVM、Node.JS 和 Python 代码。


Rookout 非常棒的一点在于它允许用户快速且安全地调试 staging 和生产环境的应用。它能够在几秒钟之内提供所有需要的数据,消除了冗长和复杂的调试过程。


Rookout 能够按需提供数据,确保了开发人员可以理解和调试代码中所存在的问题,不需要编码、重新部署和重新启动他们的应用。


借助 Rookout,我们可以远程调试实时的 Electron 应用。Rookout 的可共享接口允许开发者在棘手的 Electron 应用程序中设置不间断的断点(与常规端点类似,只不过这种端点不接触代码,能够让我们在不停止或中断应用的情况下,获取代码中的数据)。


借助该工具,我们可以完整地看到应用的性能,这样就可以跟踪问题并开发对应的修复程序。Rookout 能够让这一切变成现实,而且不需要在终端用户上安装任何额外的软件。

亮点

  • 易于上手起步;

  • 与 Git 无缝集成;

  • 支持与一系列工具的集成,如 Slack、Datadog、Sentry、Sumologic 等;

  • 交互跟踪和屏幕共享功能;

  • 实时提供全面的调试数据。

2.Visual Studio Code


Visual Studio Code始终是每个使用.NET 开发人员的首选。它有大量的特性来实现本地和远程调试。借助该工具,我们可以设置条件端点和日志点。


它还允许我们探查变量。对于远程调试,我们需要安装VS code远程开发扩展包。这个包有三个扩展,它们提供了启动、监控和加速远程调试循环的所有内容。

亮点

  • 免费试用,跨平台;

  • 有微软支持的高度活跃的开发社区;

  • 集成了 Git 版本控制;

  • 用来实现工作流增强的大量扩展和定制选项;

  • 非常棒的自动化代码检查和代码颜色高亮。

3.RubyMine

RubyMine是一个强大的、智能的跨平台 IDE,它允许我们调试 Ruby on Rails、CoffeeScript、JavaScript、CSS、ERB 和 HAML 等,其优秀的内置调试器允许我们轻松地设置断点和定义命中条件。



JetBrains 的 RubyMine 提供了两种方式来调试在远程设备上运行的应用。首先,你可以添加远程Ruby解释器并配置本地和远程项目文件的映射,然后启动调试会话。


或者,你也可以在远程设备上运行应用,然后添加 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 代码的编辑、测试、调试等功能。


它与Zend Server进行了紧密的集成,因此创建了一个完整的 PHP 环境,可以更容易地分析在 staging 和生产环境中探测到的问题。


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。


这个调试工具支持智能断点、命名空间修改、多线程、嵌入式调试以及加密通信。对于远程调试功能来讲,我们需要将 rpdb2.py(Winpdb 的命令行调试器)复制到远程机器上。


完成之后,使用调试器在远程机器启动 Python 脚本。在本地机器上,启动 GUI 并关联要调试的脚本。此时,我们可以使用远程设备脚本的基础名称或完整路径。关于使用 WinPDB 调试 Python 脚本的更多知识,可以参考该教程

亮点

  • 支持多线程调试;

  • 支持远程调试的加密通信;

  • 比 PDB 更快;

  • 易于使用的 GUI,支持断点、栈、变量探测等功能。


英文原文:


Top Remote Debugging Tools in 2020


2020-05-21 14:1214083
用户头像
张卫滨 业精于勤,行成于思。

发布了 641 篇内容, 共 476.0 次阅读, 收获喜欢 779 次。

关注

评论 1 条评论

发布
用户头像
可以可以,以后可以尝试一下
2020-05-22 00:10
回复
没有更多了
发现更多内容

模块6 拆分电商系统为微服务

KING

拜占庭将军问题和 Raft 共识算法讲解

京东科技开发者

算法 分布式系统 拜占庭将军问题 raft共识算法 日志同步

ChatGPT搜索风暴

OneFlow

人工智能 深度学习

谈JVM参数GC线程数ParallelGCThreads合理性设置

京东科技开发者

线程 JVM cpu GC线程 ParallelGCThreads

文盘Rust -- 本地库引发的依赖冲突

TiDB 社区干货传送门

开发语言

自定义HarmonyOS启动页组件

白晓明

HarmonyOS 自定义组件 OpenHarmony

故障案例:MySQL唯一索引有重复值,官方却说This is not a bug

GreatSQL

普通单双面板的生产工艺流程:图形转移

华秋电子

基于 Flink 的小米数据集成实践

Apache Flink

大数据 flink 实时计算

iOS tableView添加group分组

刿刀

ios UITableView

Slurm集群调度策略详解(2)-回填调度

慕冰

Slurm 回填调度

GGX发布全新路线图,揭示具备 Layer0 特性且可编程的跨链基建生态

股市老人

【立哥】【每日一个小知识】写遗嘱把部分财产赠给第三者,遗嘱有效力吗?

Lee Chen

知识

可靠、安全、稳定,开源高质量项目 | 亚马逊的开源文化

亚马逊云科技 (Amazon Web Services)

借助 APISIX Ingress,实现与注册中心的无缝集成

API7.ai 技术团队

服务注册与发现 服务发现 APISIX Ingress Controller

云数据库TiDB使用过程注意项及改进建议

TiDB 社区干货传送门

6.x 实践

2022年最新数据库调查报告:当前企业使用率第一的中国数据库是什么?

墨天轮

数据库 TiDB oceanbase 国产数据库 达梦数据

火山引擎DataTester:A/B测试,让企业摆脱广告投放“乱烧钱”

字节跳动数据平台

大数据 AB testing实战 企业号 2 月 PK 榜

HIFIVE音加加×筷子科技,内容创作如何再加“筷”一点

曲多多(嗨翻屋)版权音乐

音乐 版权 视频创作 AI剪辑

@所有人,OceanBase DevCon • 2023来啦!

OceanBase 数据库

数据库 oceanbase

# drainer binlog 清理机制 源码详解

TiDB 社区干货传送门

集群管理 管理与运维

Wallys|QCN9074/QCN6024/ 5G 802.11ax|Does QCN9074-5G module support W56?

Cindy-wallys

QCN9074 QCN6024

OceanBase 4.0解读:兼顾高效与透明,我们对DDL的设计与思考

OceanBase 数据库

数据库 oceanbase

理论+实践,揭秘昇腾CANN算子开发

华为云开发者联盟

人工智能 AI 华为云 企业号 2 月 PK 榜 华为云开发者联盟

信通院发布“2023可信AI案例 知识计算应用优秀案例”, 百度知识中台三大案例入选

极客天地

高复用性自动化脚本设计实践

京东科技开发者

自动化 测试 框架 脚本重构 高复用

LeetCode题解:938. 二叉搜索树的范围和,DFS,详细注释

Lee Chen

算法 LeetCode

【2.10-2.17】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

设计模式第七讲-外观模式、适配器模式、模板方法模式详解

C++后台开发

设计模式 后端开发 Linux服务器开发 适配器模式 C++开发

TiDB在转转公司的发展历程

TiDB 社区干货传送门

实践案例 版本升级 集群管理 管理与运维

2020年最强大的远程调试工具_语言 & 开发_Anton Lawrence_InfoQ精选文章