草庐IT

DEBUGGING

全部标签

java - 如何从 Java 中的生产代码中删除调试语句

编译器是否可以从生产代码中删除用于调试目的的语句(例如日志记录)?调试语句需要以某种方式进行标记,可能使用注释。设置属性(debug=true)并在每个调试语句中检查它很容易,但这会降低性能。如果编译器只是让调试语句消失,那就太好了。 最佳答案 两条建议。首先:对于真正的日志记录,请使用现代日志记录包,如log4j或java自己的内置日志记录。不要太担心性能,日志记录级别检查是纳秒级的。(这是一个整数比较)。如果你有多个日志语句,保护整个block:(以log4j为例:)if(logger.isDebugEnabled()){//p

java - 如何获取正在运行的应用程序的 Java 调用堆栈

我正在开发非常庞大的基于JavaWeb的应用程序。由于在开发时没有进行适当的日志记录,所以我很难设置断点和调试应用程序,因为我不知道执行顺序。在我执行某些操作后,是否有任何机制可以获取正在运行的Java应用程序的完整调用堆栈。在网上找了很久都没有找到具体的解决办法。请建议我是否有适合它的东西。谢谢 最佳答案 方法1:从命令行(JDK发行版的一部分)使用jstack实用程序。方法2:发送信号3到java进程,它会在stdout上转储堆栈跟踪。方法3:从应用程序中调用Thread.getAllStackTraces():publiccl

java - 启用和禁用 eclipse 中的所有断点

有没有办法在Eclipse中启用和禁用所有断点...?我不想删除它们只是禁用它们并在满足某些条件后启用它们。提前致谢 最佳答案 在Run菜单下,有一个SkipAllBreakpoints复选框。如果您选择它,则不会触发断点(源代码中的实际断点标记有一条线穿过它们,表示它们处于跳过模式)。当然,在默认配置中,运行代码(而不是调试它)似乎也会忽略断点,因此您可能想尝试运行它而不是调试它。请注意,这是Galileo/Ubuntu下的默认行为-我不知道在其他版本或操作系统下是否有所不同。 关于j

java - JVM 调试连接器内部结构和安全性

我最近遇到了这个问题:DebugajavaapplicationwithoutstartingtheJVMwithdebugarguments在https://docs.oracle.com/javase/7/docs/technotes/guides/jpda/conninv.html阅读有关JVM提供的各种连接器和传输的更多信息,我现在正试图找到以下问题的答案:文档说对于SADebugServerAttachingConnector和SAPIDAttachingConnector:Theprocesstobedebuggedneednothavebeenstartedindebug

java - 迭代 vector 分配时出现 Matlab 段错误

我一直在矢量化我之前编写的一些matlab代码,在此过程中,matlab开始因段错误而崩溃。我将问题缩小到一种计算类型:分配给多个结构属性。例如,即使这种形式的自赋值在执行几千次时最终也会导致段错误:[my_class_instance.my_struct_vector.my_property]=my_class_instance.my_struct_vector.my_property;我最初假设这一定是某种内存泄漏,所以尝试在每次迭代后打印出java的空闲内存,但这仍然相当稳定。是的,现在完全不知道为什么会这样:-/更新:以下更改修复了段错误:temp=[my_class_inst

java - 当我读取图像时,源栅格波段的数量和源颜色空间组件不匹配

这个问题在这里已经有了答案:IllegalArgumentException:NumbersofsourceRasterbandsandsourcecolorspacecomponentsdonotmatchForacolorimageException(1个回答)关闭7年前。当我尝试使用以下代码读取图像时myPicture=ImageIO.read(newFile("./src/javaassignment1b/Deck/Ace_Diamond_1.jpg"));出现以下错误NumbersofsourceRasterbandsandsourcecolorspacecomponents

java - 如何在 Eclipse 的调试控制台中打印 Java 对象的当前值?

我是Eclipse的新手。在Objective-C中,我可以使用此命令在控制台窗口中打印对象的值。ponameOfValue可能是gdb命令。我现在正在使用Eclipse,这在Eclipse中有什么等价物?附言我正在调试Java应用程序。 最佳答案 Eclipse具有非常强大的调试功能-比ObjectiveC强得多。首先,调试时您可以在“变量”窗口中查看所有变量的值。此外,在“变量”窗口的下方,您可以键入任意Java,选择它,右键单击,然后选择“检查”或“执行”。实际上,您可以在程序运行时以这种方式更改变量的值。您可以在源代码Pan

java - 在这种情况下,它的任何父类(super class)都不为人所知

我正在尝试将一些实体发送到基于ejb的Web服务。这是我的Web服务客户端代码:packageejbserviceclient;importjava.net.MalformedURLException;importjava.net.URL;importjavax.xml.bind.JAXBContext;importjavax.xml.bind.JAXBException;importjavax.xml.namespace.QName;importjavax.xml.ws.Service;publicclassEjbServiceClient{publicstaticvoidmain(

java - 在 Eclipse 上调整黄色框的大小并保持其大小

我一直在尝试调整当我在某个变量上按Ctrl+Shift+I时出现的黄色框的大小,但每次我调整它的大小时,它都会再次变为实际大小。我知道可以调整大小并保持这个大小,但不记得如何。你们能提醒我一下吗?谢谢。 最佳答案 在你的工作区下,打开.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml在工作台部分下,修改这些键, 关于java-在Eclipse上调整黄色框的大小并保持其大小,我们在StackOverflow上找到一个类似的

java - Eclipse 在 processWorkerExit 上中断

在处理了几个请求后,我的eclipse开始中断processWorkerExit()方法。根据这个link我知道如何抑制eclipse的中断,但是是否有任何原因导致代码在此行中断。在这种情况下会不会有内存泄漏?Tomcat7.0.27eclipse3.7.2JDK7.0.02 最佳答案 答案在这里:OpenJDKbreaksonprocessWorkerExitwithnobreakpointIndebugmodeineclipsebydefault,breakonuncaughtexceptionsischecked.Sincey