【问题标题】:jdb annoying package name while debugging调试时jdb烦人的包名
【发布时间】:2013-11-10 14:04:32
【问题描述】:

我正在尝试使用 jdb 调试我的应用程序。到现在为止我得到了很多东西,但我想把它们擦亮。

当我在 jdb 中并且想插入断点或检查变量时,jdb 需要全名 package.class.(method/variable)。这是一个例子:

Initializing jdb ...
> 
VM Started: No frames on the current call stack

main[1] stop in com.ionsoft.engine.Engine.main

这太烦人了,因为我必须输入的名字太长了。

我想输入“stop in Engine.main”,就像源和类在项目根目录中一样。

我尝试将类路径从 ./build/classes 更改为 ./build/classes/com/ionsoft/engine,但如果这样做,找不到 Engine.class。

Error: Could not find or load main class com.ionsoft.engine.Engine

有人知道吗?

更新:在我当前的类路径中,我指向的是罐子而不是类。

感谢您的宝贵时间。

【问题讨论】:

  • 可能有点跑题了,但你为什么不使用像 Eclipse、Intellij、Netbeans 等这样的 IDE?
  • 我更喜欢使用 jdb,因为通常我在没有 X 的环境中工作,而且我认为仅为调试器安装 IDE 有点过头了。
  • 当您说您“在没有 X 的环境中工作”时,您的意思是服务器,对吧?在你的桌面上,你肯定有 X 或 Windows 或 Mac OS X 吗?然后你就可以从你的桌面进行远程调试了。
  • 我很欣赏使用 Eclipse/IDE 的建议,但我曾经使用 vim 和 gdb 进行编程。我之前使用 Eclipse 或 Netbeans 进行过调试,但使用这种调试器我的性能更好,因为它们让我只专注于一件事。 (我想这是一种旧的工作方式)。
  • 那么我认为你将不得不忍受这个负担。 jdb stop 需要一个完全限定的类名,并且没有解决方法(编译后 fqn 不可更改)。

标签: java debugging jdb


【解决方案1】:

我发现了一些关于这个主题的有用信息。

我有三个选择:

  1. 使用 .jdbrc 文件,如下所示:

    monitor list
    stop in com.ionsoft.engine.Engine.main
    

    不幸的是,这是一种解决方法。我可以在这里设置我所有的断点和自定义配置。

  2. 使用 Java 调试接口 (JDI) 对我的自定义“调试器”进行编程。

    有用信息:here

  3. 忍受这个负担。 (正如 isnot2bad 所说)

我认为我更喜欢第二个选项,但同时我会使用第一个和第三个选项的组合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多