使用 Visual Studio Code 在远程计算机上调试 PostgreSQL

使用 Visual Studio Code 在远程计算机上调试 PostgreSQL

1. 概述

PostgreSQL 是一个功能强大的开源关系数据库管理系统,适用于各种应用程序。在开发过程中,调试 PostgreSQL 对于识别和解决问题至关重要。在本博客中,我们将手把手教你使用客户端计算机上的 Visual Studio Code (VSCode) 和 Linux 计算机上运行的 PostgreSQL 设置远程 PostgreSQL 开发调试环境。

2. Linux 上的设置

  • 参考此处提供的文档在物理机或虚拟机上安装 Ubuntu 22.04。并创建一个用户,例如“ubuntu”。
  • 在 Ubuntu 机器上生成 SSH 密钥对,以允许远程调试,这样就无需重复输入用户名和密码:
$ sudo apt update && sudo apt install ssh -y
$ ssh-keygen -t ed25519
$ cat /home/ubuntu/.ssh/ed25519.pub >> /home/ubuntu/.ssh/authorized_keys
  • 将私钥复制到您的 Windows 客户端计算机(例如,c:\Users\user1.ssh\id_ed25519)。注意:为了更好的安全实践,您应该在客户端机器上生成 ssh 密钥对,并将公钥信息添加到服务器的authorized_keys中,并将私钥保密为只有您自己知道的秘密。
  • 在 Ubuntu 上安装 PostgreSQL 构建依赖项:
$ sudo apt-get install -y build-essential git gdb lcov bison flex \libkrb5-dev libssl-dev libldap-dev libpam0g-dev python3-dev \tcl-dev libperl-dev gettext libxml2-dev libxslt1-dev \libreadline-dev libedit-dev uuid-dev libossp-uuid-dev \libipc-run-perl perl libtest-simple-perl
  • 克隆 PostgreSQL,编译它,然后启动 PostgreSQL 服务器:
$ git clone https://github.com/postgres/postgres.git
$ cd postgres && git checkout REL_15_3 -b pg153 
$ ./configure  --prefix=/home/ubuntu/mypg --enable-tap-tests --enable-debug CFLAGS="-g3 -O0"
$ make –j
$ make install$ export PGDATA=/home/ubuntu/mydb
$ export PATH=/home/ubuntu/mypg/pgapp/bin:$PATH
$ export LD_LIBRARY_PATH=/home/ubuntu/mypg/pgapp/lib
$ initdb -D $PGDATA
$ pg_ctl -D $PGDATA -l logfile start
$ psql -d postgres

3. 设置 Visual Studio Code

  • 安装 Visual Studio Code 并安装“Remote – SSH”和“C/C++”调试扩展。
  • 通过输入 remote-ssh 安装“Remote – SSH”扩展,如下图所示。

  • 安装如下图所示的 c/c++ debugging 扩展,并选择 Microsoft 发布的扩展。

安装完remote-ssh和c/c++调试扩展后,你应该在左下角看到一个小图标,如下图蓝色高亮所示,

单击远程 ssh 连接图标并设置远程连接配置。

选择 Connect to Host ... 然后输入 ssh ubuntu@ubuntu-ip-addr ,如果 VS Code 要求本地 ssh 配置,则使用位于 c:\Users\user1.ssh\config 的配置并输入以下信息:

Host ubuntu-ip-addr
HostName ubuntu-ip-addr
IdentityFile c:\Users\user1.ssh\id_ed25519
IdentiftiesOnly Yes
  • 如果remote-ssh已经正确设置,那么VSCode应该弹出一个新的IDE窗口,然后使用这个新的IDE窗口从远程Ubuntu服务器打开源代码。
  • 使用以下配置在 .vscode 下创建 launch.json 文件以附加 PostgreSQL 后端:
{"version": "0.2.0","configurations": [{"name": "(gdb) Attach","type": "cppdbg","request": "attach","program": "/home/ubuntu/mypg/bin/postgres","MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "Set Disassembly Flavor to Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}]
}

确保更改 /home/ubuntu/mypg/bin/postgres 以指向 Ubuntu 服务器上的 PostgreSQL 安装路径。

  • 通过单击 View -> Run 来测试远程 PostgreSQL 调试,然后选择“gdb) Attach”并附加到 PostgreSQL 后端进程。

单击运行图标开始调试

选择要附加的正确 postgres 后端以进行调试

4. Summary 4. 总结

在这篇博文中,我们演示了如何使用客户端计算机上的 Visual Studio Code 和 Linux 计算机上运行的 PostgreSQL 设置远程 PostgreSQL 开发调试环境。通过此设置,开发人员可以有效地调试 PostgreSQL 并识别和解决开发过程中的问题。调试愉快!


原文地址 Debugging PostgreSQL on a remote machine with Visual Studio Code: A Step-by-Step Guide - Highgo Software Inc.


更多阅读:

  • 如何调试分析PostgreSQL代码?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/665769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创建自己的Hexo博客

目录 一、Github新建仓库二、支持环境安装Git安装Node.js安装Hexo安装 三、博客本地运行本地hexo文件初始化本地启动Hexo服务 四、博客与Github绑定建立SSH密钥,并将公钥配置到github配置Hexo与Github的联系检查github链接访问hexo生成的博客 一、Github新建仓库 登…

Windows SDK(四)鼠标和键盘消息处理

鼠标基础知识 鼠标一般分为三种状态,三个按钮 三种状态:单击,双击,拖动 三个按钮:左键(LBUTTON),右键(RBUTTON),中键(MBUTTON&…

【计算机视觉】目标检测 |滑动窗口算法、YOLO、RCNN系列算法

一、概述 首先通过前面对计算机视觉领域中的卷积神经网络进行了解和学习,我们知道,可以通过卷积神经网络对图像进行分类。 如果还想继续深入,会涉及到目标定位(object location)的问题。在图像分类的基础上(Image classification)的基础上…

JAVA中的多态参数

1.方法定义的参数类型为父类类型,实参类型允许为子类类型 public class Ploy_parameter {public static void main(String[] args) {Manage jack new Manage("jack",12000,3000);Staff tom new Staff("tom",10000);Ploy_parameter ploy_para…

【Linux系统化学习】进程等待

目录 进程等待 进程等待的必要性 进程等待的方法 wait方法 等待一个进程(阻塞等待) waitpid方法 任意等待多个进程(阻塞等待) 父进程获取子进程的退出信息 非阻塞轮询等待 进程等待 进程等待的必要性 之前讲过,子进程退…

javascript设计模式之建造者

工厂模式不关心过程,只关心结果,这与建造者相反,建造者更关心的是过程, 这里我们创建一个基类,其拥有技能跟爱好两个属性,还有两个实例方法用来获取技能跟爱好 // 基类 let Human function (param {}) …

【深入浅出Java性能调优】「底层技术原理体系」详细分析探索Java服务器性能监控Metrics框架的实现原理分析(Dropwizard度量基础案例指南)

深入探索Java服务器性能监控Metrics框架的实现原理分析 前提介绍Dropwizard MetricsDropwizard的特点Dropwizard的开发案例需要引入Maven依赖常用度量类型Meter(每秒请求数为单位测量请求率)定义度量核心MetricRegistry构建对应的Meter指标对象请求标记采样业务方法控制报告器…

chisel 语法

// TODO: find out the new way to have a reset signal class KnightRider(resetSignal: Bool null, frequ: Int)//extends Module(_reset resetSignal) {extends Module {val io IO(new Bundle {val led Output(Bits(6.W))})//定义了一个枚举类型,包含两个状态…

使用Python将Excel数据导入Word并设置字体样式(成功)

在日常办公和数据处理中,我们经常需要将Excel中的数据导入到Word文档中。手动完成这个过程可能既费时又容易出错。本文将介绍如何使用Python自动化这一任务,同时根据数据的不同设置不同的字体样式和大小。 所需工具 Python:一种广泛使用的高…

kafka自定义分区策略详解

文章目录 前言一、kafka是什么?二、kafka的分区策略三、自定义的 Kafka 分区器实现总结 前言 在分布式消息系统中,正确地将消息发送到合适的分区是至关重要的。Kafka 作为一种高性能、可扩展的消息队列系统,在处理海量数据和高并发场景下表现…

三、05 ansible基础命令ansible 常用命令

这里写目录标题 命令介绍ansible 的基础语法实力 使用一个copy 模块 Ansible 模块功能查看工具ansible-doc的全部用法:mysql 实例 命令介绍 /usr/bin/ansible  (常用) Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行 /usr/bin/ansible-playbo…

【Linux Day15 TCP网络通讯】

TCP网络通讯 TCP编程流程 接口介绍 socket()方法是用来创建一个套接字,有了套接字就可以通过网络进行数据的收发。创建套接字时要指定使用的服务类型,使用 TCP 协议选择流式服务(SOCK_STREAM)。 **bind()方法是用来指定套接字使…

Quppy wise 注册教程,轻松通过欧洲银行同名转账绑定个人IBAN账号

Quppy 注册教程,轻松通过欧洲银行同名转账绑定个人IBAN账号 官网下载APP或者去香港区下载APP使用, 按照官方APP里的邮箱注册就行,成功后添加电话和个人信息;需要说明的是:网站所填内容请全部用真实身份填写;名在前,姓…

蓝桥杯每日一题-----数位dp

前言 今天浅谈一下数位dp的板子,我最初接触到数位dp的时候,感觉数位dp老难了,一直不敢写,最近重新看了一些数位dp,发现没有想象中那么难,把板子搞会了,变通也会变的灵活的多! 引入…

六、java函数

文章目录 java函数1.1 什么是函数1.2 进一步理解函数1.2.1 参数传递1.2.2 理解返回 java函数 本文为书籍《Java编程的逻辑》1和《剑指Java:核心原理与应用实践》2阅读笔记 在编写代码过程中,如果需要经常做某一种操作,则类似的代码需要重复…

列式数据库、行式数据库简介

列式数据库、行式数据库简介 1、数据准备2、行式数据库3、列式数据库4、行式、列式存储对比 常见的行式数据库有Mysql,DB2,Oracle,Sql-server等;列数据库(Column-Based)数据存储方式按列存储,常…

2024/1/30 dfs与bfs

想要了解dfs与bfs,就得了解队列和栈。 一、栈与队列 1.栈 栈说白了就是先入后出。把栈类比为一个容器。只有一个口,所以如果我们想要取出最底层也就是最先放入的元素,只能最后取出它。 栈基础操作有如下几种: push 放入pop 拿…

python 爬虫安装http请求库

我的是window环境,安装的python3,如果再linux环境:pip install requests 开始: 上面我们成功发送请求并获取到响应,现在需要解析html或xml获取数据,因此我使用现成的工具库Beautiful Soup

leetcode刷题(剑指offer) 297.二叉树的序列化和反序列化

297.二叉树的序列化与反序列化 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 请设计一个算法来实现…

图论练习3

内容:过程中视条件改变边权,利用树状数组区间加处理 卯酉东海道 题目链接 题目大意 个点,条有向边,每条边有颜色和费用总共有种颜色若当前颜色与要走的边颜色相同,则花费为若当前颜色与要走的边颜色不同,…