首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们如何调试我们的产品Struts/Hibernate应用?

我们如何调试我们的产品Struts/Hibernate应用?
EN

Stack Overflow用户
提问于 2011-10-18 20:27:50
回答 4查看 601关注 0票数 0

因此,我们使用Netbeans 6.9.1,将代码推送到SVN服务器( DEV ),并运行连接到MySQL的本地we服务器(Tomcat)。我们可以在调试模式下运行并逐步完成代码。

但是,我们将WAR文件推送到生产机器(在生产数据库上)。这台机器与开发完全分开。

但我们经常遇到问题。比如Hibernate中的null id,当我们对所有列进行三次检查时,等等。

我们需要的是一种将调试器附加到PRODUCTION用户并逐步遍历代码的方法。

我们有什么选择?

谢谢你的建议。

编辑

我想发布更多的信息。感谢那些提出建议的人。

首先,我们的生产服务器托管了3个应用程序(以及prod db)。我们遇到的问题最多的应用程序只有一个用户,而且数据与开发中的数据几乎完全相同。我们在JDBC中遇到了事务问题,无法找到它们的来源。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-18 20:34:01

如果您真的想将调试器附加到正在运行的生产服务器上,Java完全能够做到这一点。首先,使用以下命令运行服务器/JVM:

代码语言:javascript
复制
-Xrunjdwp:transport=dt_socket,address=8778,server=y,suspend=n

现在您可以使用prd_server:8788地址在月食IntelliJ理念中附加您的IDE。

然而,很少有问题:

  • 您需要在指定的端口上对生产服务器进行TCP/IP访问。可能会涉及防火墙/SSH隧道。
  • 默认情况下,当调试器到达断点时,它可能挂起所有线程。确保您只挂起当前的服务器,否则将冻结整个服务器。
  • ...yes,远程调试是危险的,特别是在生产上。
  • 处于调试模式/侦听调试连接的JVM可能会稍微慢一些(虽然还没有看到)。
票数 1
EN

Stack Overflow用户

发布于 2011-10-18 20:35:43

您可以使用配置Tomcat以允许远程调试器连接,但我不建议这样做,因为在附加调试器时,您将大大减慢JVM的执行速度,而且我相信,每当命中断点时,所有线程的执行都会暂停。

使用开发服务器上的生产数据、添加更多日志等等来重新创建这个问题要好得多。

票数 0
EN

Stack Overflow用户

发布于 2011-10-18 20:38:56

在尝试调试Prod之前,将Prod数据迁移到Dev env并在那里进行调试。如果在非Prod env中有针对Prod数据的安全策略,则根据需要对数据进行清理。

如果问题与数据有关,您应该相当快地处理它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7813269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档