使用VsCode编译调试Neo4j源码

文章目录

  • 使用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调试了

调试界面

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML-CSS(day01)

W3C标准: W3C( World Wide Web Consortium,万维网联盟) W3C是万维网联盟,这个组成是用来定义标准的。他们规定了一个网页是由三部分组成,分别是: 三个组成部分:(1&…

Linux文件的压缩和解压

【图书推荐】《Ubuntu Linux系统管理与运维实战》_学ubuntu哪本书好-CSDN博客 【图书介绍】】几本Linux系统管理与运维图书_朱文伟 linux驱动-CSDN博客 《Ubuntu Linux系统管理与运维实战(Linux技术丛书)》(张春晓,肖志健)【摘要 书评 试读…

基于springboot的海洋知识服务平台的设计与实现

基于springboot的海洋知识服务平台的设计与实现 写在前面 需要源码加lzlv58787 开发内容 编程语言:Java / Vue2 框架: SpringBoot Shiro Mybatis-plus 项目结构 后端管理系统前台Web 后端管理系统 前台Web

论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 王志豪,厦门大学博士生 刘诗雨,厦门大学硕士生 内容简介 新数据的不断涌现使版本更新成为大型语言模型(LLMs&#xff…

【LeetCode】394、字符串解码

【LeetCode】394、字符串解码 文章目录 一、递归: 嵌套类问题1.1 递归: 嵌套类问题 二、多语言解法 一、递归: 嵌套类问题 1.1 递归: 嵌套类问题 // go func decodeString(s string) string {// 如果遇到 嵌套括号的情况, 则递归// 可能连续多位数字, 则 通过 cur cur * 10 …

iOS开发代码块-OC版

iOS开发代码块-OC版 资源分享资源使用详情Xcode自带代码块自定义代码块 资源分享 自提: 通过网盘分享的文件:CodeSnippets 2.zip 链接: https://pan.baidu.com/s/1Yh8q9PbyeNpuYpasG4IiVg?pwddn1i 提取码: dn1i Xcode中的代码片段默认放在下面的目录中…

微信小程序的轮播图学习报告

微信小程序轮播图学习报告 好久都没分享新内容了,实在惭愧惭愧。今天给大家做一个小程序轮播图的学习报告。 先给大家看一下我的项目状态: 很空昂!像一个正在修行的老道,空的什么也没有。 但是我写了 4 个 view 容器,…

airflow docker 安装

mkdir -p /root/airflow cd /root/airflow && mkdir -p ./dags ./logs ./plugins ./configcd /root/airflow/ wget https://airflow.apache.org/docs/apache-airflow/2.10.4/docker-compose.yaml nano docker-compose.yamlAIRFLOW__CORE__LOAD_EXAMPLES: false #初始化…

Redis篇--常见问题篇7--缓存一致性2(分布式事务框架Seata)

1、概述 在传统的单体应用中,事务管理相对简单,通常使用数据库的本地事务(如MySQL的BEGIN和COMMIT)来保证数据的一致性。然而,在微服务架构中,由于每个服务都有自己的数据库,跨服务的事务管理变…

Linux x86_64离线安装Nginx全教程(含安装包)

最近在整理麒麟V10操作系统的常用中间件的安装今天也把之前的nginx一起整理一下,作为后续的笔记记录 1. 资源 百度网盘下载相关安装包包含信息如下截图 通过网盘分享的文件:nginx链接: https://pan.baidu.com/s/1r6SCnogqbhm-JOTPIjc6xA?pwdjuen 提取…

Python酷库之旅-第三方库Pandas(269)

目录 一、用法精讲 1276、pandas.tseries.offsets.BQuarterEnd.is_quarter_end方法 1276-1、语法 1276-2、参数 1276-3、功能 1276-4、返回值 1276-5、说明 1276-6、用法 1276-6-1、数据准备 1276-6-2、代码示例 1276-6-3、结果输出 1277、pandas.tseries.offsets.…

前端入门之VUE--ajax、vuex、router,最后的前端总结

前言 VUE是前端用的最多的框架;这篇文章是本人大一上学习前端的笔记;欢迎点赞 收藏 关注,本人将会持续更新。本人不是学前端的,这个是大一的时候上学的和做的笔记,那个时候学的也蒙,故这里对前端做一个总…

API-AI聊天替换网站

当你下载了API-AI聊天软件,但是不会用, Install Windows(PC) | Chatbox Releases ChatGPTNextWeb/ChatGPT-Next-Web GitHub 方法一 请看对应网站的介绍文档。 找到类似于这样说明文档,然后替换 方法二 或者找代码

Leetcode Hot 100 【二叉树】104. 二叉树的最大深度

104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3…

Flink调优----资源配置调优与状态及Checkpoint调优

目录 第 1 章 资源配置调优 1.1 内存设置 1.1.1 TaskManager 内存模型 1、内存模型详解 2、案例分析 1.1.2 生产资源配置示例 1.2 合理利用 cpu 资源 1.2.1 使用 DefaultResourceCalculator 策略 1.2.2 使用 DominantResourceCalculator 策略 1.2.3 使用 DominantRes…

MySQL 常用程序介绍

以下是一些常用的MySQL程序: 程序名作⽤mysqldMySQL的守护进程即 MySQL 服务器,要使⽤MySQL 服务器 mysqld必须正在运⾏状态mysql MySQL客⼾端程序,⽤于交互式输⼊ SQL 语句或以批处理模式从⽂件执⾏SQL的命令⾏⼯具 mysqlcheck⽤于检查、修…

利用Gurobi追溯模型不可行原因的四种方案及详细案例

文章目录 1. 引言2. 追溯不可行集的四种方法2.1 通过约束增减进行判断2.2 通过computeIIS函数获得冲突集2.3 利用 feasRelaxS() 或 feasRelax() 函数辅助排查2.4 利用 IIS Force 属性1. 引言 模型不可行是一个让工程师头疼的问题,对于复杂模型而言,导致模型不可行的原因可能…

【机器学习】机器学习的基本分类-半监督学习(Semi-supervised Learning)

半监督学习是一种介于监督学习和无监督学习之间的机器学习方法。它利用少量的标注数据(有监督数据)和大量的未标注数据(无监督数据)来进行模型训练,从而在标注数据不足的情况下,提升模型的性能。 半监督学习…

西门子200smart实现TCP服务器源码分享

1、创建TCP服务器 2、服务器故障复位 3、TCP发送数据 4、TCP接收数据

攻防世界web第二题unseping

这是题目 <?php highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method $method;$this->args $args;}function __destruct(){if (in_array($this->method, array("ping"))) {cal…