使用VsCode编译调试Neo4j源码

ops/2024/12/27 2:05:28/

文章目录

  • 使用VsCode编译调试Neo4j源码
    • 1 简介
    • 2 步骤
      • 1 下载源码
      • 2 依赖
      • 3 构建Neo4j
      • 4 运行
      • 5 安装VsCode扩展
      • 6 **调试**

使用VsCode编译调试Neo4j源码

1 简介

Neo4j作为领先的图数据库,在存储、查询上都非常值得分析学习。通过调试、日志等方法跟踪代码工作流有助于理解其原理及具体实现。本文旨在帮助想要单步调试Neo4j却不知道怎么搞,或是遇到些问题的朋友。

2 步骤

1 下载源码

Neo4j源码
本文用的5.26版本

2 依赖

按照源码中的README就行,本文是基于Ubuntu

  • 安装JAVA及配置环境
apt-get install openjdk-17-jdk -y# 装完后需要配置一下环境变量
code ~/.bashrc

添加以下两行内容:

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
# 保存并关闭文件后,运行以下命令使更改生效
source ~/.bashrc# 验证安装
java -version
  • 安装Maven及环境配置
    注:使用ubuntu的apt安装的maven版本较低。 需要下载更新的版本:
# 下载Maven 3.8.2
wget https://downloads.apache.org/maven/maven-3/3.8.2/binaries/apache-maven-3.8.2-bin.tar.gz# 解压
tar -xvzf apache-maven-3.8.2-bin.tar.gz -C /opt# 配置环境变量
code ~/.bashrc

添加以下两行:

export MAVEN_HOME=/opt/apache-maven-3.8.2
export PATH=$PATH:$MAVEN_HOME/bin
# 保存并关闭文件后,运行以下命令使更改生效
source ~/.bashrc# 验证安装 
mvn -v

3 构建Neo4j

按照README就行了。我直接执行的以下命令没有遇到任何问题,如果遇到一些问题,可以看一下README这部分的东西

mvn clean install -DskipTests -T1C

构建完成后,到packaging/standalone/target目录下解压neo4j-community-5.26.1-SNAPSHOT-unix.tar.gz

cd packaging/standalone/target
tar -xvzf neo4j-community-5.26.1-SNAPSHOT-unix.tar.gz

4 运行

解压后,进入解压的目录就可以运行Neo4j了

cd neo4j-community-5.26.1-SNAPSHOT
# 运行Neo4j
bin/neo4j-admin server start# 停止
bin/neo4j-admin server stop

运行后点开网页会发现:

{"errors": [{"code": "Neo.ClientError.Request.Invalid","message": "Not Found"}]
}

这是由于从源码编译运行,缺少neo4j-browser-5.24.0.jar。我的解决办法是从release的Neo4j docker里面拷贝过来。该文件是在/var/lib/neo4j/lib目录下

5 安装VsCode扩展

在VsCode扩展应用商店中搜索并安装Extension Pack for Java

Extension Pack for Java插件

6 调试

  • 修改Neo4j配置文件
    配置文件都在neo4j-community-5.26.1-SNAPSHOT/conf目录下,打开neo4j.conf添加
server.jvm.additional=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005

注:如果你是在docker里面开发,并且映射了相应端口,需要把server.default_listen_address=0.0.0.0这一行解注释

修改完配置文件后再运行Neo4j,会有如下输出:

Directories in use:
home:         /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT
config:       /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/conf
logs:         /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/logs
plugins:      /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/plugins
import:       /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/import
data:         /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/data
certificates: /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/certificates
licenses:     /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/licenses
run:          /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/run
Starting Neo4j.
Listening for transport dt_socket at address: 5005

说明Neo4j正在监听调试端口5005.

  • 修改vscode调试任务配置文件
    打开.vscode目录下的launch.jsonconfigurations中添加:
{"type": "java","name": "Debug Neo4j","request": "attach","hostName": "localhost","port": 5005
}

如果没有.vscode,需要点运行和调试生成。之前安装的插件会帮你导入很多调试配置

  • 开始调试
    使用该配置开始调试,就可以连接进Neo4j调试了

调试界面


http://www.ppmy.cn/ops/145267.html

相关文章

【ollama安装】国内 ubuntu22.04 linux 环境安装ollama教程

使用命令行前,请确保已经通过pip install modelscope 安装ModelScope。 modelscope download --modelmodelscope/ollama-linux --local_dir ./ollama-linux --revision v0.5.4 安装ollama 下载安装包后,可以进入ollama-linux文件夹,确定安装…

css 裁剪 clip-path

clip-path 是一个强大的 CSS 属性,用于裁剪元素的可视区域,支持多种形状裁剪。它可以用来创建复杂的裁剪效果,如圆形、多边形、路径等。 clip-path: none | shape | url(#clipPathId);none:不裁剪,显示完整内容。shap…

Electron -- Electron应用主要核心(二)

Electron 应用主要由以下几个核心组成部分构成: 主进程(Main Process): Electron 应用的入口点是主进程,通常是 main.js 文件。它负责管理应用的生命周期,包括创建窗口、处理系统事件和应用更新等。主进程可…

C:\Windows 文件夹

在Windows操作系统中,C:\Windows 文件夹是一个非常重要的系统文件夹,它包含了Windows操作系统的核心文件和组件。主要子文件夹: System32: 包含了大多数Windows系统的可执行文件和动态链接库(DLL)文件。 SysWOW64: 在6…

路由器的原理

✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网路安全入门系列 目录 路由器的原理一,路由器基础及相关…

云原生后端开发(一)

云原生后端开发 云原生(Cloud-Native)是指一种构建和运行应用程序的方式,它充分利用了云计算的特点,比如弹性伸缩、自动化部署、容器化等。在云原生的架构下,后端应用通常具备高度可扩展、可维护、易于自动化管理的特…

最长正则括号序列算法详解

一、引言 在计算机科学中,处理括号序列的问题是一个常见且有趣的领域。本文将深入探讨如何寻找最长正则括号序列这一问题,包括问题的详细描述、解决该问题的算法思路、代码实现以及通过示例对算法进行深入剖析。 二、问题详细描述 (一&…

【人工智能】用Python实现情感分析:从简单词典到深度学习方法的演进

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 情感分析是自然语言处理(NLP)中的一个重要任务,其目的是通过分析文本内容,识别出其中的情感极性,如正面、负面或中性。随着技术的不断…