【问题标题】:Remote debugging threads with different debuggers使用不同调试器的远程调试线程
【发布时间】:2013-07-09 06:06:09
【问题描述】:

我有一个应用程序,它是运行不同线程的调度程序。 应用程序可能会加载新的 Runnable 类并运行它们。 目前该应用程序正在生产中,即它在远程服务器上运行。

我的团队由 3 名开发 Runnable 类的人组成。 当类准备好时,它会上传到服务器并加载到调度程序。

我想让我的团队能够调试特定线程。 即:A 人可以调试 Runnable A、B-B 等线程。

授予他们对远程 JVM 的完全访问权限并不是解决方案,因为 不允许开发者看到系统核心,以及彼此的解决方案。

所以我的问题是:如何允许使用特定于线程的连接进行多次远程调试?

首选IDE:Eclipse

编辑:

可以使用 jdb 远程连接到特定线程 http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html

这里是一个例子:http://www.itec.uni-klu.ac.at/~harald/CSE/Content/debugging.html
1) 使用 jdb 线程查找您的线程
2) 下断点,进入想要的线程

安全问题仍然存在。 一种解决方案是在没有调试符号的情况下编译受保护的代码,但它只会保护核心,允许看到彼此的线程。
所以,下一步 - 挖掘安全管理器。也许有适合我情况的特权层。

【问题讨论】:

  • 在服务器系统中创建一个简单的web应用,简单的文件上传、下载
  • 这些功能已作为服务器系统的一部分实现。

标签: java multithreading remote-debugging


【解决方案1】:

我不确定我是否能很好地回答你的问题,但让我们看看结果如何。

据我了解,您希望允许不同的开发人员单独调试他们的类,并且他们的类作为单个 Java 进程的一部分作为线程运行。

从表面上看,这与调试的本质背道而驰,因为通常您可以访问过程中的所有内容。我不认为 Java 在这方面与任何其他语言有什么不同(我不是 Java 程序员)。

那么如何在不同的 Java 进程中运行这些类。这样,我认为标准 Eclipse 工具将允许每个开发人员远程附加和调试他们的类。

但是,我认为这些类需要以某种方式相互交互,否则你一开始就不会问你的问题。就交互而言,在单独的进程 (JVM) 中运行每个类听起来像是一件坏事。

那么,如果每个类之间的进程边界并不那么重要,那么另一种形式的交互又如何呢?你可以看看使用JCSP,据我所知,它并不关心两个线程是否在同一个进程中。

这是一个完全不同的交互模型,完全基于同步消息传递。您会获得一些不错的附带好处 - 可伸缩性突然不再是一个大问题,它允许您避开通常与多线程程序相关的许多陷阱(死锁等)。但是,如果您已经编写了大量代码,那么采用 JCSP 可能是一次重大的重写。

那是在标记附近的任何地方吗?祝你好运。

【讨论】:

  • 目前拆分系统,如前所述,需要时间。但我想告诉你:谢谢!下次我会考虑你的回答。
猜你喜欢
  • 2014-11-01
  • 2013-03-05
  • 1970-01-01
  • 2011-09-12
  • 2010-09-27
  • 2012-01-22
  • 2010-09-21
  • 2012-11-17
  • 2011-07-27
相关资源
最近更新 更多