0

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

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

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

授予他们对远程 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)放置断点并输入想要的线程

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

4

1 回答 1

0

我不确定我对你的问题有一个很好的答案,但让我们看看结果如何。

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

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

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

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

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

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

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

于 2013-07-10T05:53:49.327 回答