diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/AbstractProgram.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/AbstractProgram.java index 80ff3d224d..4d60c989a4 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/AbstractProgram.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/AbstractProgram.java @@ -31,6 +31,9 @@ public abstract class AbstractProgram { private final Object sleepLock = new Object(); private boolean running = true; + @Option(name = "--show-stack-trace", usage = "display stack trace on failure") + private boolean showStackTrace; + @Option(name = "--help", usage = "display this help text", aliases = {"-h"}) private boolean help; @@ -72,13 +75,17 @@ public abstract class AbstractProgram { ProxyUtil.configureHttpProxy(); return run(); } catch (Die err) { - final Throwable cause = err.getCause(); - final String diemsg = err.getMessage(); - if (cause != null && !cause.getMessage().equals(diemsg)) { - System.err.println("fatal: " - + cause.getMessage().replaceAll("\n", "\nfatal: ")); + if (showStackTrace) { + err.printStackTrace(); + } else { + final Throwable cause = err.getCause(); + final String diemsg = err.getMessage(); + if (cause != null && !cause.getMessage().equals(diemsg)) { + System.err.println("fatal: " + + cause.getMessage().replaceAll("\n", "\nfatal: ")); + } + System.err.println("fatal: " + diemsg.replaceAll("\n", "\nfatal: ")); } - System.err.println("fatal: " + diemsg.replaceAll("\n", "\nfatal: ")); return 128; } } diff --git a/tools/pgm_daemon.launch b/tools/pgm_daemon.launch index 5a7a8669a1..9dca1f8b5a 100644 --- a/tools/pgm_daemon.launch +++ b/tools/pgm_daemon.launch @@ -13,7 +13,7 @@ - +