当前位置: 首页 > 面试题库 >

远程调试Java应用程序

卢鸿彩
2023-03-14
问题内容

我有一个在Linux机器上运行的Java应用程序。我使用以下命令运行Java应用程序:

java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n

我已经在此Linux机器上为TCP打开了端口4000。我使用Windows XP计算机上的eclipse,并尝试连接到此应用程序。我也在Windows中打开了端口。

这两台机器都在LAN上,但是我似乎无法将调试器连接到Java应用程序。我究竟做错了什么?


问题答案:

我注意到有些人在这里剪切和粘贴该调用。我最初给出的答案仅与OP有关。这是一种更现代的调用样式(包括使用更常规的8000端口):

java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>

原始答案如下。

尝试这个:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp

这里有两点:

  1. runjdwp选项中没有空格。
  2. 选项位于类名之前。类名之后的所有参数都是程序的参数!


 类似资料:
  • 问题内容: 我正在调试jnlp应用程序,过去可以通过Eclipse对其进行远程调试,但现在不再可用。 启动它的命令是: 问题是当我连接Eclipse调试器时,它会关闭并重新启动;因此,调试器将附加到第一个进程;当这种情况消失时,调试器也是如此。 调试器脚本实际上并不重要;因为如果suspend = n,则在调试器启动之前,jnlp进程会自行重新启动。 我尝试跟踪它,但是选项-XX:TraceSup

  • ThinkPHP5.0版本开始,提供了Socket日志驱动用于本地和远程调试。 Socket调试 只需要在配置文件中设置如下: return [ 'type' => 'socket', 'host' => 'slog.thinkphp.cn', //日志强制记录到配置的client_id 'force_cl

  • 有人用过java的远程调试吗?发现代码中用到常量的时候取的好像是本地的,具体的场景是远程服务器上有个常量类没有更新,有个常量是不存在的,但是调试的时候依然可以执行代码,发现常量的值用的是本地类的,是不是因为常量是在编译期就生成了所以可以不依赖远程服务直接调用本地的就可以?

  • 使用远程调试 为了与qemu配合进行源代码级别的调试,需要先让qemu进入等待gdb调试器的接入并且还不能让qemu中的CPU执行,因此启动qemu的时候,我们需要使用参数-S –s这两个参数来做到这一点。在使用了前面提到的参数启动qemu之后,qemu中的CPU并不会马上开始执行,这时我们启动gdb,然后在gdb命令行界面下,使用下面的命令连接到qemu: (gdb) target remot

  • 我的应用程序不支持下一代java插件,但在我的一个文档中,我看到了调试此应用程序的步骤,以设置jvm运行时参数为-Xdebug-Xrunjdwp:传输=dt_socket,地址=8000,服务器=y,挂起=y。 现在的问题是与此参数Internet Explorer是不是崩溃或挂起没有加载任何东西。一旦删除此参数解决了这个问题,应用程序运行正常。 那么,是否可以使用其他参数调试该应用程序?我也尝试

  • 前言 在通过串口调试嵌入式设备时,每次需要通过接线和 USB 转换器连接才能进行,对设备操作的话,存在一定的不便,并且会占用电脑的 USB 口,接线也会造成一定的不稳定,因此可以通过串口命令开启 telnet 或者 ssh 服务,远程登陆设备。通过系统命令、程序的输出以及 gdb 进行 远程调试,提高调试的便捷性。 调试案例 某路由器溢出漏洞调试 在 2.3.1 章节中对漏洞进行静态分析,现在来动