Add example for auto debugging and asm() usage

main
Justine Tunney 2020-06-26 16:09:04 -07:00
parent d51409ccd9
commit d5c3a6f039
2 changed files with 45 additions and 1 deletions

View File

@ -1932,4 +1932,4 @@ __data_start:
.hidden __piro_start .hidden __piro_start
.end .end
 

View File

@ -0,0 +1,44 @@
#if 0
/*─────────────────────────────────────────────────────────────────╗
To the extent possible under law, Justine Tunney has waived
all copyright and related or neighboring rights to this file,
as it is written in the following disclaimers:
http://unlicense.org/ │
http://creativecommons.org/publicdomain/zero/1.0/ │
*/
#endif
#include "libc/log/log.h"
/**
* Automatically launchs GDB Debugger TUI during crash.
*
* Run the following inside a terminal:
*
* sudo apt install gdb
* make -j12 o//examples/auto-launch-gdb-on-crash.com
* o//examples/auto-launch-gdb-on-crash.com
*
* Backtrace is logged instead if run outside interactive terminal.
* Environmental factors such as GDB, MAKEFLAGS, ADDR2LINE, TERM, and
* isatty(STDERR_FILENO) should also be taken into consideration:
*
* $ export GDB=eoatuhshtuone
* $ o//examples/auto-launch-gdb-on-crash.com
* error: Uncaught SIGTRAP
* etc. etc.
*
* @see https://www.felixcloutier.com/x86/intn:into:int3:int1
* @see https://en.wikipedia.org/wiki/INT_(x86_instruction)#INT3
* @see examples and reference material on using the asm() keyword
* - libc/nexgen32e/bsf.h
* - libc/nexgen32e/tzcnt.h
* - libc/nexgen32e/cpuid4.h
* - libc/nexgen32e/tinystrcmp.h
* - https://gist.github.com/jart/fe8d104ef93149b5ba9b72912820282c
*/
int main(int argc, char *argv[]) {
showcrashreports();
asm("int3"); /* cf. die(), perror("msg"), abort(), exit(1), _Exit(1) */
return 0;
}