Tag: 调试

握手失败 – 在Intellij中调试Solr时连接先关闭错误

所以我打算在Intellij Community Edition上调试我的Solrfilter插件。 在我使用此命令从命令提示符运行程序后 java -jar start.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8983 我用这个配置启动了我的Intellij调试器: Transport : socket Debugger mode : attach Host : localhost Port : 8983 但是当我运行调试器时出现了这个错误: Error running Debugger: Unable to open debugger port (localhost:8983): java.io.IOException “handshake failed – connection prematurally closed” 知道如何解决这个问题吗?

在Eclipse中调试期间,是否可以跳转到一行并在调试期间执行它?

在Visual Studio中,可以在调试会话期间跳转到光标选择的行并执行该行。 跳到该行后,您可以从跳转到的行继续调试。 Java / Eclipse世界中是否存在此function? 例如: foo1(); foo2的(); foo3(); 返回true; 在Visual Studio中,可以在foo1()上中断,将光标放在foo3()上,执行foo3()而不执行foo2。 此外,当调试器在“return true”上停止时,我可以将光标放在foo1上,然后再次执行foo1。 此外,我可以继续通过这些操作执行任意代码行。

为rhino构建java脚本调试器

我正在使用tomcat服务器,我添加了一个犀牛引擎,以便我的用户能够使用某些脚本function。 第二阶段是提供一些调试环境。 我知道rhino有一个调试API,但我找不到任何关于如何使用它的文档/代码示例,并围绕它构建一个调试器 有谁知道?

使用Java JNI时是否可以调试核心转储?

我的应用程序主要是Java,但对于某些计算,它使用C ++库。 我们的环境是在RedHat 3上运行的Java 1.6(很快就是RedHat 5)。 我的问题是C ++库不是线程安全的。 为了解决这个问题,我们运行多个单线程“工作”流程,并让他们从中央工作管理器开始工作,也是用C ++编写的。 我们的Java应用程序通过第三方产品调用C ++ Work Manager。 出于各种原因,我们希望重新编写C ++ Work Manager和worker。 我赞成用Java编写它们,在每个worker中使用JNI来调用C ++库。 主要问题是如果C ++库核心转储会发生什么。 不幸的是,这很常见,我们需要能够看到C ++库中的哪一行导致了这个问题,例如通过检查GDB之类的回溯。 我的同事认为,分析核心转储是不可能的,因为像GDB这样的工具不了解Java生成的核心文件。 我希望他们错了,但在进一步推动我的想法之前我需要确定。 分析Java / JNI生成的核心转储的最佳方法是什么?

调试时强制exception

是否可以在调试时强制抛出exception。 让我举个例子:我正在调试一些从互联网上下载页面的代码。 当Internet连接丢失或网卡关闭时,应抛出IOException,而不是执行阻塞(在第二行) URLConnection connection = requestURL.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 我需要一种方法来强制抛出exception, 同时调试代码阻塞,所以我可以跳转到catch块。 我正在使用netbeans BTW。 在执行线程暂停时手动添加Debugging =。 编辑 :换句话说,我需要注入 – 在运行时调用exception,而不影响当前代码! 谢谢。

在Eclipse IDE中调试Java时将exception作为表达式捕获

Java开发人员的日常调试情况是抛出exception,然后您需要深入研究调试器以找出抛出的内容。 通常,您会尝试在抛出exception之前设置一些断点,并希望您能够确定导致该exception的情况。 在Eclipse中,断点可以定义一个表达式,只有当变量x等于值y时才会触发断点。 我的问题是,是否有可能定义某种全局表达式,一旦抛出exception,它就被调试器捕获,允许程序员立即检查所有变量? 理想情况下,您还没有遇到catch块,Eclipse会捕获引发的exception并停止执行而不更改堆栈内容。 这是可能的还是受JVM的限制?

生产JVM的安全调试

我们有一些应用程序有时会陷入糟糕的状态,但仅限于生产(当然!)。 虽然进行堆转储可以帮助收集状态信息,但使用远程调试器通常更容易。 设置它很容易 – 只需将其添加到他的命令行: -Xdebug -Xrunjdwp:transport = dt_socket,server = y,suspend = n,address = PORT 似乎没有可用的安全机制,因此在生产中启用调试将有效地允许任意代码执行(通过hotswap)。 我们在Solaris 9和Linux(Redhat Enterprise 4)上运行了1.4.2和1.5个Sun JVM。 我们如何启用安全调试? 有没有其他方法来实现我们的生产服务器检查目标? 更新:对于JDK 1.5+ JVM,可以指定调试器应绑定的接口和端口。 因此,如果在服务器上正确设置了SSH,KarlP建议绑定到环回并仅使用SSH隧道连接到本地开发人员框。 但是,似乎JDK1.4x不允许为调试端口指定接口。 那么,我们可以阻止访问网络中的某个调试端口,或者在操作系统本身中进行一些特定于系统的阻塞(如Dared建议的那样,IPChains等)? 更新#2:这是一个让我们限制风险的黑客,即使在1.4.2 JVM上也是如此: 命令行参数: -Xdebug -Xrunjdwp: transport=dt_socket, server=y, suspend=n, address=9001, onthrow=com.whatever.TurnOnDebuggerException, launch=nothing 用于打开调试器的Java代码: try { throw new TurnOnDebuggerException(); } catch (TurnOnDebugger td) { //Nothing } TurnOnDebuggerException可以是任何保证不被抛出的exception。 我在Windows机器上对此进行了测试,以certificate(1)调试器端口最初没有接收到连接,并且(2)抛出如上所示的TurnOnDebuggerexception会导致调试器生效。 […]

调试部署在tomcat中的java应用程序

我有一个我在tomcat中部署的应用程序。 后来我将代码配置为Eclipse中的项目。 我想通过eclipse连接到tomcat并调试应用程序。 尝试设置远程调试连接会导致错误。 我需要在tomcat中添加任何条目吗?

在RMI中通过引用问题?

有人可以告诉我,为什么这个RMI聊天应用程序无法正常工作,我的目标是通过远程对象或序列化对象实现客户端,服务器和逻辑之间的分离。 import javax.swing.*; import java.awt.event.*; import java.rmi.*; import java.rmi.server.*; public class ChatClient1 implements ICallback { JFrame frame = new JFrame(“Chat Client”); private JTextArea myText; private static JTextArea TAUinDispMsg; private JScrollPane myTextScroll; private JScrollPane TAUinDispMsgScroll; private String textString = “”; private boolean firstMessage = true; private static String name = null; private static final int HOR_SIZE […]

Eclipse调试HashMap:使用Key和Value的toString()方法的逻辑结构

我最近在使用IntelliJ几年后开始使用Eclipse。 使用IntelliJ调试Map时,如果键或对象实现toString(),则会显示键值的字符串表示的良好列表。 在Eclipse中,当我选择Show Logical Structure时 ,我看到如下内容: 此视图的问题是您需要展开每个条目以查看实际的键和值。 如果你需要在超过10个元素的地图中找到某些东西,那就变得非常繁琐。 我知道你可以制作自定义逻辑结构,Map的默认值看起来像这样: return entrySet().toArray(); 有没有办法,通过自定义逻辑结构或插件来查看更有用的地图条目 ConcurrentHashMap$WriteThroughEntry (id=193)