写点什么

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:1213391
用户头像
张卫滨 业精于勤,行成于思。

发布了 549 篇内容, 共 381.7 次阅读, 收获喜欢 723 次。

关注

评论 1 条评论

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

☕️从Java8到Java17的新特性(一):Java8 的新特性

看山

Java java8

java培训Redis高频面试考点

@零度

Java redis

设计一个 SaaS 系统需要考虑的4个关键点

Im胡子

系统架构 SaaS SaaS设计 SaaS系统架构

最好的 6 个 React Table 组件详细亲测推荐

蒋川

React

Redis:在windows环境安装Redis

喀拉峻

redis

你了解部署流水线吗?

华为云开发者联盟

自动化 软件开发 devcloud 部署流水线 流水线

DPU芯片头部企业云豹智能加入龙蜥社区,共同推动新一代数据中心基础设施蓬勃发展

OpenAnolis小助手

云计算 开源 芯片 龙蜥社区

玩转OpenMLDB社区,四张角色卡待解锁

第四范式开发者社区

人工智能 数据库 开源 贡献者 特征平台

如何在新公司快速落地

Hockor

深入浅出 Vue3 核心知识点

百瓶技术

Vue 前端 VUE 3.0 源码 vue3.0

Rust的Cow类型

Shine

rust cow

大数据培训十大Hive调优技巧

@零度

大数据 hive调优

IOS技术分享| ARCallPlus 开源项目(一)

anyRTC开发者

ios 移动开发 语音通话 视频通话 呼叫邀请

使用APICloud AVM多端框架开发仿微信通讯录功能

YonBuilder低代码开发平台

前端开发 APP开发 APICloud 多端开发 avm.js

《软件开发的201个原则》思考:4. 高质量软件是可以实现的

非晓为骁

个人成长 软件工程 软件开发

Jetpack Compose之 在Compose中使用Navigation导航

黄林晴

android Compose JetPack

云效DevOps全家桶评测征集令重磅来袭!免费使用云效全套功能

阿里云云效

云计算 阿里云 DevOps 云原生

FAQ(常见问题)页面的编写技巧

小炮

企业 常见问题 客户服务

WebAssembly技术_JS调用C函数示例_传递参数、方法导出

DS小龙哥

webassembly 3月月更

Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?

码哥字节

Redis 核心技术与实战 Redis 热点key 缓存服务 3月月更

焕然一新的 Vue 3 中文文档来了

CRMEB

HertzBeat赫兹节拍 v1.0.beta.6 发布,Linux监控来啦

TanCloud探云

开源 APM 监控 告警

presto是如何保证作业内存不会发生冲突和溢出

华为云开发者联盟

内存 presto 内存计算引擎 System Pool general Pool

公有云RDS太贵?基于ECS构建的多云RDS服务可降低近半成本

沃趣科技

数据库 公有云 RDS 云数据库RDS for MySQL 云数据库Redis

5G 和 Wi-Fi 市场与技术的一些思考系列之二

李伟-晨泳

前端培训之常见算法分享

@零度

前端算法

聊聊 C 语言和 ABAP 这两门编程语言的关系

汪子熙

c++ 编程语言 C语言 abap 3月月更

如何消除代码山中那一大坨参数列表

华为云开发者联盟

代码 软件设计 参数 全局变量 参数列表

昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!

华为云开发者联盟

CVPR CANN 图像生成 昇腾AI处理器 图像布局

春招进行时!当代大学生求职行为大赏

易观分析

求职 招聘 春招

RocketMQ的tag还有这个“坑”!

中间件兴趣圈

RocketMQ tag 消息过滤

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