当前位置: 首页 > 知识库问答 >
问题:

将调试器附加到neo4j过程jar

彭鸿文
2023-03-14

我正在java中开发一个neo4j过程。我可以使用下面的自定义数据对其进行测试。

@Test
public void commonTargetTest2() {
    // This is in a try-block, to make sure we close the driver after the test
    try (Driver driver = GraphDatabase.driver(embeddedDatabaseServer.boltURI(), driverConfig);
            Session session = driver.session()) {
        // And given I have a node in the database
        session.run(
                "CREATE (n1:Person {name:'n1'}) CREATE (n2:Person {name:'n2'}) CREATE (n3:Person {name:'n3'}) CREATE (n4:Person {name:'n4'}) CREATE (n5:Person {name:'n5'})"
                        + "CREATE (n6:Person {name:'n6'}) CREATE (n7:Person {name:'n7'}) CREATE (n8:Person {name:'n8'}) CREATE (n9:Person {name:'n9'}) CREATE (n10:Person {name:'n10'})"
                        + "CREATE (n11:Person {name:'n11'}) CREATE (n12:Person {name:'n12'}) CREATE (n13:Person {name:'n13'})"
                        + "CREATE (n14:Person {name:'n14'}) CREATE "
                        + "(n1)-[:KNOWS]->(n6),(n2)-[:KNOWS]->(n7),(n3)-[:KNOWS]->(n8),(n4)-[:KNOWS]->(n9),(n5)-[:KNOWS]->(n10),"
                        + "(n7)-[:KNOWS]->(n11),(n8)-[:KNOWS]->(n12),(n9)-[:KNOWS]->(n13),"
                        + "(n11)-[:KNOWS]->(n14),(n12)-[:KNOWS]->(n14),(n13)-[:KNOWS]->(n14);");

        // name of the procedure I defined is "p1", below I'm calling it in cypher
        StatementResult result = session
                .run("CALL p1([1,3], [], 3, 0) YIELD nodes, edges return nodes, edges");

        InternalNode n = (InternalNode) result.single().get("nodes").asList().get(0);
        assertThat(n.id()).isEqualTo(13);
    }
}

这样做很好,但是数据是用< code>CREATE语句新生成的,非常小。我想用现有的neo4j数据库服务器测试我的过程。这样我就可以用真实/大数据看到我的程序的性能/结果。

我也可以通过下面的代码实现这一点。我可以连接到一个启动并运行的neo4j数据库。

@Test
public void commonTargetTestOnImdb() {
    // This is in a try-block, to make sure we close the driver after the test
    try (Driver drv = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "123"));
            Session session = drv.session()) {

        // find 1 common downstream of 3 nodes
        StatementResult result = session.run(
                "CALL commonStream([1047255, 1049683, 1043696], [], 3, 2) YIELD nodes, edges return nodes, edges");

        InternalNode n = (InternalNode) result.single().get("nodes").asList().get(0);
        assertThat(n.id()).isEqualTo(5);
    }

}

现在,我的问题是,如果我连接到一个现有的数据库,我不能调试我的程序的代码。我打包了一个JAR文件,并把它放在我的neo4j数据库的< code>plugin文件夹中,以便neo4j可以调用我的过程。我想我应该调试JAR文件。我使用vscode和java扩展来调试和运行测试。如何用vscode调试JAR文件?

共有1个答案

云京
2023-03-14

为了记录在案,我找到了一种方法来调试我的neo4j存储过程。我使用Java8。我使用了IntelliJ的想法。我将configdbms.jvm.additional=-agentlib: jdwp=运输=dt_socket,服务器=y,挂起=n,地址=5005添加到neo4j.conf文件

这里请注意,Java9中的语法是不同的。最后,为了给出端口参数,它使用了地址=*:5005。这里有关于它的帖子。https://stackoverflow.com/a/62754503/3209523

 类似资料:
  • 问题内容: 我厌倦了插入 进入我的Python程序并通过控制台进行调试。我怎么办 连接远程调试器并插入来自用户的断点 接口? 问题答案: 使用Winpdb. 它是一个独立于平台的图形 GPL Python调试器,支持通过网络进行远程调试,多个 线程、名称空间修改、嵌入式调试、加密通信 比pdb快20倍。 特征: GPL许可证。Winpdb是免费软件。 兼容cpython2.3到2.6和python

  • 问题内容: 我正在尝试从头开始从Visual Studio 2017调试电子应用程序(而不是vscode)。 我创建了一个控制台nodejs项目,安装并保存了电子文件。项目 内容(取自电子网站): And 但是,当我单击“开始”时,电子应用程序将启动,但调试过程似乎会自行脱离。当我尝试将调试器手动附加到所有电子过程(调试->附加到过程->选择所有电子过程)时,断点声称未命中,因为未加载任何符号。

  • 问题内容: 您可以使用Eclipse附加到正在运行的应用程序,类似于使用Visual Studio附加方式吗? 问题答案: 是。 如果在打开调试端口的情况下启动服务器,请将其添加到java命令中: 并且您的项目中有源代码(从技术上讲这不是必需的,但是除非您这样做,否则它是无用的),您可以通过使用host =服务器所在的机器设置“调试配置”来连接到正在运行的服务器在端口= 8888上运行(例如-参见

  • 我无法将 Android Studio 的调试器附加到我的可调试应用程序进程。还有其他人有这个问题吗?基本上,我无法在”对话框中列出我的应用程序。 我正在选择: 然后,以下是Android Studio的对话框的样子: 知道为什么我的应用程序没有显示在< code >选择进程列表中吗? 虽然,在list中看到了我的应用程序: 还可以在列表中看到该应用程序: 我试过这些动作: < li >重新启动<

  • 我在Ubuntu虚拟机上运行Java应用程序,命令如下: 我用命令打开了端口9999(在VirtualBox中也是转发端口): 最后我以错误告终 我对远程调试不是很有经验。请问可以给java -server进程附加调试器吗?

  • 我搜索了互联网,尝试了我遇到的一切,但我不知道我做错了什么。我无法将调试器附加到Android Studio中的Android进程。 我在Android Studio2.3.3中使用VirtualBox在虚拟机上构建了一个应用程序,运行Ubuntu16.04.2。我已经在我的设备上安装了这个应用程序,一个Getac数据记录器,并注意到我的应用程序打开几秒钟,显示一个空白的白色屏幕,然后崩溃。因此,