使用不同调试器的远程调试线程

时间:2013-07-09 06:06:09

标签: java multithreading remote-debugging

我有一个应用程序,它是调度程序运行不同的线程。 应用程序可能会加载新的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)放置断点并输入所需的线程

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

1 个答案:

答案 0 :(得分:0)

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

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

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

那么如何在单独的Java进程中运行类。这样我就假设标准的Eclipse工具允许每个开发人员远程连接和调试他们的类。

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

那么,每个班级之间的流程边界并不是真的那么重要,那么另一种形式的互动怎么样呢?您可以查看使用JCSP,据我所知,如果两个线程在同一个进程中,它们并不在乎。

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

那是否接近标记?祝你好运。

相关问题