我遇到了GAE应用程序的生产问题。这个问题似乎只与某些用户有关。
是否有可能将本地调试器连接到prod版本?我想避免将prod数据复制到开发服务器。
谢谢!
答案 0 :(得分:2)
这种情况在几天前因 Google Cloud Debugger
的引入而有所改善本周早些时候,在Google Cloud Platform Live上,我们推出了Cloud Debugger测试版,可以更轻松地对生产中的应用程序进行故障排除。现在,您只需选择一行代码,设置一个观察点,调试器将返回本地变量以及从您在服务的任何副本上执行该行的下一个请求中的完整堆栈跟踪。设置时间为零,没有复杂的配置,并且对用户没有明显的性能影响。
答案 1 :(得分:1)
不可能,您只能使用日志进行调试。
答案 2 :(得分:0)
我设法解决了这个问题。问题是一个程序抛出一个异常,我没有正确地抓住它。代码是
catch (Exception e) {
e.printStackTrace();
}
在开发平台上,异常被抛出在控制台上。生产中的问题是它没有出现在GAE控制台中。这有两个非常糟糕的结果:
- > 1)最终用户不知道交易没有成功结束
- > 2)管理员不知道发生了问题,无法调试
==>
因此我已经用
替换了代码catch (Exception e) {
final Logger log = Logger.getLogger(InternalServiceImpl.class.getName());
log.severe("Problem while updating XXX record : " + e.getLocalizedMessage());
updatedRecord.setRPCResult(DB_PROBLEM); // This is specific to my application to notify the end user
}
我确实修改了重新启动应用程序的代码,发现问题是事务中的资源争用。
真的是一个愚蠢的初学者错误。