写点什么

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

发布了 558 篇内容, 共 398.6 次阅读, 收获喜欢 735 次。

关注

评论 1 条评论

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

Elasticsearch聚合学习之三:范围限定

程序员欣宸

elasticsearch 9月月更

【精通内核】Linux内核写锁实现原理与源码解析

小明Java问道之路

读写锁 锁降级 Linux内核 9月月更 锁唤醒

2022-09-14:以下go语言代码输出什么?A:0 0;B:0 1;C:1 1;D:1 0。 package main func main() { println(f(1)) } func

福大大架构师每日一题

golang 福大大 选择题

关于数据仓库的特点及组成的概述

阿泽🧸

数据仓库 9月月更

基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v5.0版已发布

JackJiang

Netty 即时通讯 im开发 开源im

软件测试 | 测试开发 | 测试人生 | 入行3年,年薪36W+,从外包到知名互联网公司,疫情之下薪资不止翻倍~

测吧(北京)科技有限公司

测试

从0到一开发微信小程序(1)——申请账号并安装开发环境

微信小程序专栏

关于运维监控系统实践中的一些tips

穿过生命散发芬芳

监控系统 9月月更

图系列算法在转转推荐算法召回及粗排的实践

转转技术团队

深度学习 推荐系统 图算法 graph embedding

软件测试 | 测试开发 | 测试面试真题|工作2年,从小厂到大厂,薪资翻倍是怎样的体验?

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 接口测试项目实战与经典面试题解析,挑战 BAT 大厂必会!

测吧(北京)科技有限公司

测试

C++学习---cstdbool和cstddef源码学习分析

桑榆

c++ 源码阅读 9月月更

渡过“寒冬”,看云原生数据库如何助力企业降本增效与持续创新

亚马逊云科技 (Amazon Web Services)

数据库 云原生

【C语言深度剖析】深入理解const的用法(趣味小故事解析)

Albert Edison

指针 C语言 const 9月月更

敏捷Scrum实施落地中的3大典型问题及解法

爱吃小舅的鱼

从0到1开发微信小程序(2)——开发第一个小程序

微信小程序专栏

从0到1开发微信小程序(3)—小程序框架配置

微信小程序专栏

StarRocks 社区一周年:极速统一,感谢遇见!

StarRocks

数据库

软件测试 | 测试开发 | 测试人生 | 40+的年龄50W+的年薪,2线城市入职名企,他曾想放弃测试?

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 测试开发基础|一文搞定计算机网络(一)

测吧(北京)科技有限公司

测试

跟着卷卷龙一起学Camera--AF

卷卷龙

ISP 9月月更

为什么Vue中的v-if和v-for不建议一起用

达摩

Vue

软件测试 | 测试开发 | 测试工程师如何突破职场瓶颈?

测吧(北京)科技有限公司

测试

2022年区块链金融场景化应用专题分析

易观分析

区块链 金融

Java知识点锦集1

喜羊羊

9月月更

数据结构与算法 之线性表

喜羊羊

9月月更

C/C++生态工具链——gcc/g++编译器使用指南

独立开发者_CoderZZ

c++ C语言 GCC g++ gcc 编译器

内核实战教程第五期 _ SQL 执行引擎的设计与实现

OceanBase 数据库

软件测试 | 测试开发 | 文未有福利 | BAT 名企大厂做接口自动化如何高效使用 Requests ?

测吧(北京)科技有限公司

测试

面试突击83:什么情况会导致@Transactional事务失效?

王磊

Java 面试题

Java知识点锦集2

喜羊羊

9月月更

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