标签: jdb

在为变量分配某个值时中断

我希望jdb(我通过Eclipse调试器使用)在为变量赋值时中断.我不想在某个特定的行设置断点,而是更普遍.

例如,每次x == null时中断.

这样的事情可以实现吗?

java eclipse debugging jdb

38
推荐指数
4
解决办法
2万
查看次数

如何使用 Visual Studio Code 附加到远程 Java 调试器

我正在尝试配置 Visual Studio Code,以便我可以使用它而不是 IJ 来调试复杂的 Java 应用程序。由于太复杂的原因,我一直在使用 mvnDebug 在终端上运行,然后使用 JDB 连接。在 IJ 中,我将其设置为远程调试器,但是,我似乎无法在 VSC 中找到相同的选项。

我已经尝试过这个扩展,但我不知道如何为 JDB 配置它(我不应该需要 startupClass 等)。

如何在 Visual Studio Code 中使用 JDB?

java jdb visual-studio-code

17
推荐指数
1
解决办法
1万
查看次数

在jdb中调试时"bci"是什么?

在命令行上使用jdb进行调试时,它会在每个步骤后显示一个状态行,如下所示:

Step completed: "thread=main", [class name].[method], line=10 bci=20
Run Code Online (Sandbox Code Playgroud)

什么是bci,它对我有什么用?

java debugging jdb

12
推荐指数
1
解决办法
3261
查看次数

"无法连接到远程VM"将jdb连接到Windows上的Android模拟器

我一直试图将jdb连接到android模拟器一段时间,并且已经反复遇到:

jdb -sourcepath ./src -attach localhost:8700

java.io.IOException: shmemBase_attach failed: The system cannot find the file specified
        at com.sun.tools.jdi.SharedMemoryTransportService.attach0(Native Method)
        at com.sun.tools.jdi.SharedMemoryTransportService.attach(SharedMemoryTransportService.java:90)
        at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:98)
        at com.sun.tools.jdi.SharedMemoryAttachingConnector.attach(SharedMemoryAttachingConnector.java:45)
        at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:358)
        at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:168)
        at com.sun.tools.example.debug.tty.Env.init(Env.java:64)
        at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1010)

Fatal error:
Unable to attach to target VM.

不太好.绕过这个最好的方法是什么?我在Windows 7 64bit上运行.

java windows debugging jdb android-emulator

11
推荐指数
1
解决办法
1万
查看次数

通过bjdwp在Linux上调试黑莓

我已经走上了使用Linux进行Blackberry开发的漫长道路.目前这意味着:

bb-ant-tools - 用于建筑

net_rim_api.jar - 以及Eclipse插件1.3.0中的其他Blackberry好东西

preverify - 从J2ME SDK或WTK,我忘了哪个

Retrotranslator - 用于将一些Java 5转换为J2ME

bjavaloader - 来自Barry,用于将应用程序推送到我的设备

我离开了很远的路,而且我已经放弃了Eclipse,因为我更喜欢vim.最后一块拼图是:

Linux上的黑莓调试

我也尝试过bjdwp,也来自Barry项目.我通过jdp连接时可以连接并查看一些控制台输出.但是,尝试使用jdp功能似乎失败了.在Eclipse中作为远程应用程序进行调试会导致以下错误:

在抛出'Barry :: Error'的实例后终止调用

what():Controller:不支持请求的模式

最好的方法是在Virtualbox中的Windows中设置jdwp并远程连接到Linux吗?

java linux debugging blackberry jdb

11
推荐指数
1
解决办法
457
查看次数

如何将控制台输入传递给正在运行的Java程序而不是jdb?

使用Java的jdb调试我的代码.我停留在我的程序期望命令行输入的位置,但是jdb将其作为jdb命令拦截.

如何告诉jdb将文本传递给正在运行的程序?

版:

C:\Documents and Settings\*snip*>java -showversion
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

编译:

javac -g LZWDecompress.java
Run Code Online (Sandbox Code Playgroud)

jdb.ini:

stop in LZWDecompress.decompress
run
monitor list
Run Code Online (Sandbox Code Playgroud)

这是发生的事情:

Initializing jdb ...
*** Reading commands from C:\Documents and Settings\*snip*\jdb.ini
Deferring breakpoint LZWDecompress.decompress.
It will be set after the class is loaded.
> run LZWDecompress
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
> > >
VM Started: Set deferred breakpoint LZWDecompress.decompress
File to …
Run Code Online (Sandbox Code Playgroud)

java debugging jdb

10
推荐指数
1
解决办法
5313
查看次数

jdb条件断点

我使用JDB远程调试我的应用程序,只是JDB,没有IDE,在jdb中是否有办法设置条件断点?

例如:停在MyClass:80 时mystr.equals("abc")

java debugging jdb

9
推荐指数
2
解决办法
1897
查看次数

用"jdb -attach"(或jswat)调试android应用程序

我在使用模拟器上的Android应用程序的独立java调试器时遇到了麻烦.显然,任何具有远程功能的java调试器(如jdb(或jswat))都可以通过以下步骤进行操作(正如我在此处阅读后所理解的那样):

1)打开模拟器,在模拟器上安装您的应用程序(adb install)

2)打开dalvik服务器(ddms)

3)在模拟器上,运行"DevTools"应用程序 - >"开发设置" - >选择要调试的应用程序,启用"等待调试器"标志

4)再次在模拟器中运行你的应用程序; 它将阻塞,等待调试器附加,dalvik将显示一个由"红色bug"标记的新进程

5)在dalvik上,选择红旗过程; 因此,它的调试端口转发到localhost:8700

6)将调试器挂钩到localhost:8700.使用jdb,你必须运行"jdb -attach 8700"

启动调试器后,模拟器上的应用程序将解锁.因此,似乎应用程序已正确检测到调试器,因此可以自由运行.

然而,重点是它"自由运行",也就是说,它不会等待调试器发出"运行"命令.所以我没有机会设置任何断点.

根据1的提示,我已经尝试在我的应用程序的开头放置等待循环,希望我有时间设置断点.当我尝试设置断点时,jdb会说"延迟断点XXX.YYY.它将在加载类后设置.",因为应用程序尚未运行.但是,如果我然后发出"运行"命令,答案是"没有暂停.",因为应用程序已经运行(确实如此).

使用jswat你没有看到这些消息,但最终的结果是相同的:-(

不用说,"jdb -attach"适用于在localhost上运行的非android java应用程序.

任何提示("请使用eclipse"除外)?

我在任何地方都错过了一个愚蠢的细节吗?

该应用程序是一个HelloWorld,构建命令是"ant debug".

先感谢您.

debugging jdb android-emulator

9
推荐指数
1
解决办法
7065
查看次数

使用带有source作为jdb源的jar?

我有一个编译源代码的可执行jar,我想用jdb调试它(不幸的是,在这个环境中没有其他调试器可用).

我可以调试它

jdb -classpath "${JAR_FILE}:${CLASS_PATH}" ${MAIN_CLASS} ${ARGS}
Run Code Online (Sandbox Code Playgroud)

如何让jdb使用jar文件中内置的源代码?

注: Java 6,AIX,ksh

java debugging jdb

8
推荐指数
2
解决办法
8706
查看次数

Intellij 调试 Docker 容器不断给我 IO 异常握手失败

我正在尝试在 Intellij v2020.1 中设置远程调试器,但不断收到以下错误:

无法打开调试器端口(localhost:5005):java.io.IOException“握手失败 - 连接过早关闭”

在我的 docker compose 文件中,我已将端口 5005 安装到 5005

在我的 docker 文件中,我有:

EXPOSE 5005

ENTRYPOINT ["/bin/bash", "runme.sh"]

在我的 shell 脚本中我有:

/opt/java/openjdk/bin/java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar mine.jar

当我执行 docker ps 时,我可以看到以下内容:

0.0.0.0:5005->5005/tcp, 0.0.0.0:8111->8111/tcp

在 IntelliJ 中,我将远程调试器从端口 5005 设置为容器端口 5005,添加到模块 claspath 中,并在启动前步骤中添加到我的 compose 文件中。

服务启动正常,但无法连接到调试器,有什么想法吗?

java debugging jdb docker docker-compose

8
推荐指数
1
解决办法
1万
查看次数