Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在大型软件系统中进行调试?_Java_Intellij Idea - Fatal编程技术网

Java 如何在大型软件系统中进行调试?

Java 如何在大型软件系统中进行调试?,java,intellij-idea,Java,Intellij Idea,在具有我的组件和依赖项的大型软件系统中,使用调试器并不是进行调试的有效方法。大多数人使用日志记录器将关键或信息性消息记录到日志文件中。这是真的吗?关于如何调试大型软件有什么建议吗 我正在使用IntelliJ或Eclipse 直接清除bug始终是发现软件中bug的最有效、最快速的方法。。。问题是:你不能总是使用它。想象一下,在一个生产环境中,几乎可以肯定的是,您既没有授权,也没有可能停止软件进行调试会话。但您可以随时登录文件系统或数据库表,以获取有关软件执行和可能错误的关键信息。我的建议是,把你的

在具有我的组件和依赖项的大型软件系统中,使用调试器并不是进行调试的有效方法。大多数人使用日志记录器将关键或信息性消息记录到日志文件中。这是真的吗?关于如何调试大型软件有什么建议吗


我正在使用IntelliJ或Eclipse

直接清除bug始终是发现软件中bug的最有效、最快速的方法。。。问题是:你不能总是使用它。想象一下,在一个生产环境中,几乎可以肯定的是,您既没有授权,也没有可能停止软件进行调试会话。但您可以随时登录文件系统或数据库表,以获取有关软件执行和可能错误的关键信息。我的建议是,把你的软件放在一个可以直接或远程调试它的环境中,同时添加有意义的日志,以加快bug的解决

调试依赖于软件,但一般来说,调试器是一个非常强大的工具。你只需要知道臭虫最可能藏在哪里。您不想在主方法的第一行设置断点,这就是为什么问自己以下问题可能会有所帮助:

这个bug很可能是一个外观奇怪的GUI bug,还是一个潜在的后端bug? 程序的哪个模块/依赖项/部分负责出现故障的任务? 如果您有可用的日志,它们是否包含任何堆栈跟踪? 它还可以帮助复制日志消息并在代码库中搜索它,以查看日志消息的发布位置。
然而,一旦您大致知道在哪里查找错误代码,就可以归结为使用调试器:将断点设置在您认为错误可能存在的位置,启动调试器并开始破解。同样,您不想调试整个程序,但一旦找到了痛处,调试器就是一个非常强大的工具。

在大型软件项目中使用调试器到底有什么低效之处?你是自己做的,还是别人刚刚告诉你的?这就是为什么人们使用单元测试我在一个有大量Java文件的项目中工作。大约15岁。数百名开发人员都在编写代码。但仍然使用Eclipse调试器来修复大多数bug。是什么让您认为使用大型代码库不可能使用调试器?在我的单元测试中,它启动另一个JVM,代码进入外部包,无法访问代码中的断点。如何处理这种情况?太好了!然后您就知道问题存在于外部包或对该包的调用中。因此,请继续检查您是否正确调用了该包,如果正确,请调试该包(如果可以)。但是,首先为什么要在单元测试中调用外部包呢?