diff options
author | Diederik de Groot <ddegroot@talon.nl> | 2017-04-21 16:36:19 +0200 |
---|---|---|
committer | Diederik de Groot <ddegroot@talon.nl> | 2017-04-21 16:36:19 +0200 |
commit | cb7a06379d872ca28918517c7f9d1ad14f02b389 (patch) | |
tree | 7c22bc66ca64ac7df3d60e7f1e6a325f47a8360b /dragonflybsd | |
parent | cba695961a995a692495f9990d8a047f0bf052c8 (diff) |
Enh: Add support for backtrace using execinfo
Diffstat (limited to 'dragonflybsd')
-rw-r--r-- | dragonflybsd/DragonFlyBSDCRT.c | 16 | ||||
-rw-r--r-- | dragonflybsd/DragonFlyBSDCRT.h | 3 |
2 files changed, 18 insertions, 1 deletions
diff --git a/dragonflybsd/DragonFlyBSDCRT.c b/dragonflybsd/DragonFlyBSDCRT.c index 52e86d9e..ba311856 100644 --- a/dragonflybsd/DragonFlyBSDCRT.c +++ b/dragonflybsd/DragonFlyBSDCRT.c @@ -10,12 +10,26 @@ in the source distribution for its full text. #include "CRT.h" #include <stdio.h> #include <stdlib.h> +#ifdef HAVE_EXECINFO_H +#include <execinfo.h> +#endif void CRT_handleSIGSEGV(int sgn) { (void) sgn; CRT_done(); - fprintf(stderr, "\n\nhtop " VERSION " aborting.\n"); + fprintf(stderr, "\n\nhtop " VERSION " aborting. Please report bug at http://hisham.hm/htop\n"); + #ifdef HAVE_EXECINFO_H + size_t size = backtrace(backtraceArray, sizeof(backtraceArray) / sizeof(void *)); + fprintf(stderr, "\n Please include in your report the following backtrace: \n"); + backtrace_symbols_fd(backtraceArray, size, 2); + fprintf(stderr, "\nAdditionally, in order to make the above backtrace useful,"); + fprintf(stderr, "\nplease also run the following command to generate a disassembly of your binary:"); + fprintf(stderr, "\n\n objdump -d `which htop` > ~/htop.objdump"); + fprintf(stderr, "\n\nand then attach the file ~/htop.objdump to your bug report."); + fprintf(stderr, "\n\nThank you for helping to improve htop!\n\n"); + #else fprintf(stderr, "\nPlease contact your DragonFlyBSD package maintainer!\n\n"); + #endif abort(); } diff --git a/dragonflybsd/DragonFlyBSDCRT.h b/dragonflybsd/DragonFlyBSDCRT.h index 1b650046..b934ac32 100644 --- a/dragonflybsd/DragonFlyBSDCRT.h +++ b/dragonflybsd/DragonFlyBSDCRT.h @@ -10,6 +10,9 @@ Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ +#ifdef HAVE_EXECINFO_H +#endif + void CRT_handleSIGSEGV(int sgn); |