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 @@
-
+